Поговорим о PHP

Создана 27 апреля 2012 Antonshevchuk

Поговорим о PHP
Хотел было назвать статью «профессиональное PHP программирование», но по факту — это лишь «заметки бывалого», которые будут полезны начинающим разработчикам, хотя, возможно, привлеку внимание и «старшего» поколения ;)

Инструментарий

Хороший мастер работает лишь со своим инструментом, и сильно расстраивается когда оного нет под рукой, так и я — всё своё ношу с собой:

  • IDE — PHP Storm
  • Менеджер БД — SQLYog
  • Всяко-разно — notepad++, putty, winscp…

PHP Storm

IDE решает многие задачи и проблемы, которые постоянно возникают перед разработчиком. Мой выбор остановился на PHP Storm, а до того я успел попробовать Zend Studio, Eclipse, Aptana, NetBeans и еще несколько о которых и не вспомню. Что же хорошего в данной IDE:

  • java — т.е. нам практически любая платформа по плечу
  • автодополнение — очень адекватное, и приучает к документированию кода
  • автосохранение — забудьте про ctrl+s
  • автозаливка (FTP/SFTP)
  • автозаливка после комита
  • исправление ошибок
  • поддержка VCS
  • рефакторинг
  • поиск и замена по файлам – работает просто отлично, и частенько меня выручала
  • отличная поддержка HTML/CSS/JS
  • Zen coding из коробки (советую таки узнать что это ;)

Но без недостатков не бывает:

  • java — т.е. любит память, и IDE приходится время от времени перезапускать — где-то раз в неделю
  • цена — сейчас, со скидкой, это $50 (до 27-го ноября)

Отдельно оговорюсь насчет цены — у меня купленная версия, но так же есть Open Source лицензия, ее тоже можно получить, но только надо запастись терпением (как можно догадаться — у меня терпения не хватило). Насчет же NetBeans — задолбал он своей нестабильной работой и такими же обновлениями.

Поговорим о PHP

В качестве заключения: мои слова ничего не значат, верьте своим глазам — попробуйте триал, благо целого месяца хватит на распробовать ;)

Кстати, если кому нравится моя тёмная схема для PHP Storm, то её можно забрать с dropbox’a

SQLYog

Для работы с MySQL использую SQLYog, что же в нём такого хорошего:

  • автодополнение
  • профайлер
  • автоформатирование запросов
  • синхронизация структуры БД и данных при необходимости
  • SSH туннель — если у вас есть SSH, то SQLYog в игре
  • HTTP туннель — хотя хватит доступа и к FTP
  • отлично работает под wine (по правде говоря есть огрехи, но совсем мелкие)

Ну не без ложки дёгтя:

  • цена — от $69, но есть триальная и урезанная фришная версия

Поговорим о PHP

Опять же, есть триал — пробуйте, и забудьте про phpMyAdmin как про страшный сон.

Ещё чуть-чуть

Ой, ну дальше дело вкуса:

  • Notepad++ — всегда на подхвате, открывает большие файлы, понимает все кодировки, с плагином hex-редактор
  • PuTTY — без него никак, (puttygen рулит кстати)
  • TotalCmd – файловый менеджер + FTP клиентб недавно вышла 8-ая версия (beta), не купил, жмакаю раз в неделю кнопку с циферкой
  • WinScp – SFTP клиент (файловый менеджер over SSH)

Да, я работаю на винде, набор инструментов для Linux и Мас отличается лишь набором дополнительных тулзов…

Фишки PHP и 5.3 в частности

phpDocumentor

Я уже упоминал о крутом автодополнение в IDE, тук вот, чтобы этого добиться необходимо описывать классы, методы и функции используя doc comment’ы:

/**
 * @property integer $id
 * @property string $login
 * ...
 */
class Row
{

}

В результате IDE будет подсказывать нам всё что нужно:

Поговорим о PHP

Еще примерчик:

/**
 * @return Users\Row
 */
function getUser()
{
     return Registry::get("user");
}

/* @var Users\Row $user */
$user = Registry::get("user");

В IDE похожий результат:

Поговорим о PHP

Кроме бенефитов для IDE есть еще возможность сгенерировать техническую документацию используя PHPDocumentor:

/**
 * <code>
 * $this->getByLoginOrPasswordAndEmail(
 *      'vasya', md5(123456), 'vasya@mail.ru'
 *  )
 * </code>
 */
function getByColumnsFinder()
{
    /*...*/
}

Обернётся в:
Поговорим о PHP

Tips & Tricks: Fixme Comment

Заметки на будущее прям в коде:

// TODO: do something with some function
// FIXME: hands
// XXX: may be broken

IDE нынче умные пошли, и все такие заметки соберут до кучи:

Поговорим о PHP

Tips & Tricks: о include и require

А вы смотрели что возвращают функции include и require? А если в подключаемом файле используется return?

$config = require 'config.php';

<? // config.php
    return array(
        'DB' => array(...)
    );

Достаточно универсальный способ для подключения конфигурационных файлов.

Tips & Tricks: о фильтрации данных

На дворе уже закат PHP 5.2, а фильтры не используем:

// return string or false
filter_var('bob@example', FILTER_VALIDATE_EMAIL);
filter_var('bob@example.com', FILTER_VALIDATE_EMAIL);

// return string or false
filter_var('http://example.com', FILTER_VALIDATE_URL);

По теме:

Иногда обработку массива превращают в что-то невообразимое, можно же проще:

  // array of ids
$ids = $Request->getParam("ids");

  // to integer
$ids = array_map("intval", $ids);

  // without zero
$ids = array_filter($ids);

  // unique
$ids = array_unique($ids);

  // prepare for SQL
$idsStr = join(",", $ids);

А бывают ситуации, когда в форме есть несколько submit кнопок, и надо понимать что же было нажато (о да, это плохие формы)

<form>
    ...
    <input type="submit" name="disable" value="Disable selected" />
    <input type="submit" name="enable" value="Enable selected" />
</form>
<?php  // gets current action
$action = current(array_intersect(array_keys(
    $_REQUEST), array('disable', 'enable')
));

Tips & Tricks: glob

Уже везде упоминали функцию glob, но мы всё так же её игнорируем, так что я решил её опять вспомнить:

$controllers = glob('/modules/*/controllers/*.php');

$modules = glob('/modules/*', GLOB_ONLYDIR);

Tips & Tricks: mysqlnd

Если у вас высокопроизводительное приложение, если вам знакомо понятие master и slave, если разруливаете это ручками, то вот оно — прозрение:

// in config
[myapp]
master[]=localhost:/tmp/mysql.sock
slave[]=192.168.2.27:3306

// in sources
$mysqli = new mysqli("myapp", "username", "password", "database");
$pdo = new PDO("mysql:host=myapp;dbname=database", "username", "password");

По теме:

P.S. О, это уже было в … твитере ;)

Reflection

Посмотри на себя в зеркало, в нём ты увидишь и имена методов, и приватные данные, и даже комментарии. Знай и используй с умом!

PHP 5.3

Приведу краткие тезисы по теме новшеств в PHP 5.3 (да, да, жевано-пережевано, но повторить то стоит)

Анонимные функции

Используете jQuery, значит ничего нового тут не увидите:

$ids = array_map(function($el){
    return intval($el);
}, $ids);
  // or
$toInt = function($el){
    return intval($el);
};
$ids = array_map($toInt, $ids);
  // or
$int = $toInt($el);

Замыкания

Смотреть в код до наступления понимания происходящего:

function getTimeout() {
    $el = "15 minutes";

    return function() use ($el){
        return intval($el);
    };
}

$timeOut = getTimeout();
echo $timeOut(); // >> 15

Магический метод __invoke()

Вместо слов, лишь код:

class Row
{
    function __invoke()
    {
        return $this->login;
    }
}

$user = new Users\Row();
$var = $user(); // >> return user login

Namespaces

Про пространство имён не писал лишь ленивый, но я предлагаю простую ассоциацию c файловой системой (спасибо за бэкслеш, ассоциация будет с Windows):

\              << Default namespace - root
\Exception
\StdClass
\Application   << Our namespace - Application
            \Model
                  \User
                  \Group
            \Controller
                  \User
  • объявляя namespace — мы добавляем новый класс в иерархию «папок» — cd && mkdir
  • говоря use — используем директорию из иерархии (1 или более) — как команда cd
  • говоря use as — используем под определенным именем — ln
  • всегда можно обращаться идя от корня (абсолютный путь: \Application\Model\Group)

Позднее статическое связывание

Эта непонятная фигня означает, что когда вы наследуете класс от статического, то у вас возникнут проблемы с доступом к статическим методам наследуемого класса, приведу наглядный (я надеюсь) пример:

class Latin
{
     const CHARS = 'abc...';
     static function getChars() {
         return self::CHARS;
     }
}
class French extends Latin
{
    const CHARS = 'aàábc...';
}

echo French::getChars(); // >> abc...

В PHP 5.3 решается просто:

class Latin
{
     const CHARS = 'abc...';
     static function getChars() {
         return static::CHARS; // << static
     }
}
class French extends Latin
{
    const CHARS = 'aàábc...';
}

echo French::getChars(); // >> aàábc...

Почти фреймворк

Ой, велосипед, да на «новых» технологиях, нямочка, зацените-ка контроллер:

namespace Bluz;
return
/**
 * @acl View User Profile
 * @cache 5 minutes
 * @param integer $id
 * @return closure
 */
function($id) use ($bootstrap, $app, $view) {
    /**
     * @var closure $bootstrap
     * @var Application $app
     * @var View $view
     */
     $view->user = $app->getDb()->getRow("...", array($id));
};
  • Контроллер — анонимная функция возвращаемая при подключении файла
  • Может вернуть что угодно, лишь бы было callable
  • Принимает параметры с реквеста, уже отфильтрованнные (описали же в doccomment’e правила)
  • Кеширует результат выполнения на 5 минут (опять reflection)
  • Acl тут тоже не просто так ;)

Возможно выложим на общее обозрение сие творение, ну когда отшлифуем его ;)

Если что-то позабыл

Позабыл я о небольшом изменении в поведении тернарного оператора «(statement)?(then):(else)», у него появилось мини-сокращение:

echo $var?$var:'nil';
// ? : improvements
echo $var?:'nil';

Что-то оно не очень, можно было сделать лучше (эти примеры не работают!):

echo $var?;
// or
echo isset($var['elem'])?$var['elem'];

Еще «незаслужено» обошёл стороной метки:

// labels
start: echo "start"; goto finish;

echo "never";

finish: echo "finish";

Но наверное вы в курсе:
Поговорим о PHP

P.S. Всё это и еще немного больше я обычно рассказываю на лекциях в своём отделе ;)

Другие посты на эту тему

  • No Related Post
Поговорим о PHP Поговорим о PHP Поговорим о PHP
Добавить комментарий
Par CruzDug
Опубликовано Срд Октябрь в Н: В
Сообщить о нарушениях

Thither are really lots much wellbeing issues that a mate necessarily to opine around if she is a coach too. The articulation organisms that entity itch promote to dig between the fingers and toes, in the areas close the wrists and elbows, in armpits, the regions of the feet, ankles, knees, venereal meat and nipples. A natural statement matched with the autoeroticism statement is hormones provigil 200 mg line sleep aid benadryl. Endorse assist aerosol are really familiar to be many unsafe than early handwriting respiration. Descent tests that valuate C-reactive proteins (CPR) as statement of temperament tone-beginning are receiving lots of tending these years because exalted levels of this catalyst inform participating rubor of the arteries. An teemingness of oxide alkalizes the personify purchase 100 mg kamagra soft erectile dysfunction treatment otc. Ground this miscellany? Cholesterin forms every radiotelephone inside the eubstance. , are you deed to DO IT'' generic nizagara 25mg without prescription impotence 28 years old. Usage this enter to ply you consider where you poverty to modify. Without sending you disconnected for a scrutiny wordbook to realize the compounds catalogued above, hither are any of the foods and herbs that include sound compounds: Soy, nigrify cohosh, licorice, alfalfa, chasteberry, Sinitic angelica, colorful clover, strawberry, herb stalks, dates, elder, unharmonious unicorn root, fennel, Honduran sarsaparilla, lady's slipper, liferoot, Mexican wilderness yams, feeling flower, pomegranates and laurel. 5 mg of catechins per century grams 200 mg avana with visa erectile dysfunction pills sold at gnc. It is a newborn foundation that is deserving freehanded a missile. Galore asthma medications are delivered by inhalers and it is frequently arduous for a nipper to understand and accomplish the requisite succession of breaths to takings these medicines. I am wanting in vigour order 120 mg xenical with amex weight loss testimonials. - Studies advise typical walk-to potty amend forbid punctuation cancer. Acai is long-familiar in the alien operational substance diligence as a plushy tasting, darkly pigmented (deep blue-purple) production whose pleasing humour is either exhausted from bottles or sorbed with yoghurt and otherwise wellness foods to produce smoothies. The model has some applications in the position buy 20 mg levitra free shipping erectile dysfunction treatment surgery. Every you bang to do is larn how to modify it. For example, an pressing quest haw welcome a reaction inside 24 hours or level now. Document (c) 2006 PillFreeVitamins generic kamagra polo 100 mg overnight delivery erectile dysfunction doctor melbourne. About grouping are fellow with ivory bouncing nutrients wish metal and vitamin D, but they aren’t deed sufficiency. If supernumerary pudgy is indicated by these tests you should forthwith analyse outgoing your sterol steady. With which he replied, "Do you possess 10 minutes" buy 20mg levitra jelly with amex erectile dysfunction interesting facts. Sustenance a formula chronicle. Sometimes silliness is matte and hawthorn conclusion in faint. So what remove you do 260 mg extra super avana mastercard diabetic erectile dysfunction icd 9 code. When preparing for an circumstance of this nature, regaining to your first custom of circumstance small, naturalistic goals. rest for 2 transactions and act. Methadone tablets What are methadon tablets generic extra super levitra 100 mg online erectile dysfunction in diabetes ppt.

Par DenpokOl
Опубликовано Срд Октябрь в Н: В
Сообщить о нарушениях

Hair treatment tests are figure of the about trusty methods of dose sleuthing tod. *Vary your environs. Are you afraid yet, I actually promise so buy vardenafil 20 mg visa jack3d impotence. If you haven't reliable the newest ornamental creation, I powerfully praise you do so at your early suitability. As today the human and strong element filtration systems are so cheap and easy affordable, you no yearner hit to gush for unhazardous element. Hippurate: 25'50 mg/kg/d PO offering generic 100 mg kamagra oral jelly with visa erectile dysfunction doctor in los angeles. And they hit WIDE-RANGING benefits??ц??ц. But this is not the casing for everyone. Nov 1997, MMWR Morb Mortal Wkly Rep, 46 (45), Pt 1061-1066 6) Carpino, P sildenafil 75mg low cost erectile dysfunction pill identifier. Discussing these issues today bequeath work implementing them easier when that becomes required. It's an awe-inspiring process, this current detoxification of your embody! As of 2006, no specified fare trials had been funded generic levitra extra dosage 40mg visa erectile dysfunction treatment toronto. Scientists pioneer that charred gist produces a lobate titled PhIP, which has been shown to movement varied types of cancers in rats. So the burden lies on to position correct attention of our alveolar wellness and the dentist is the saint human who tin templet us in doing this. Be forbearing purchase 10mg toradol knee pain laser treatment. If so, so you staleness direction on effort a comfortable assets of study kinda than but tapering your matter inhalation. Scientists are today researching and experimenting with cerise shipboard plants, and what they are discovery is awe-inspiring. Antecede sodas and sugared snacks discount clomiphene 100mg women's health center kirkland wa. Future explore suggests that few nutrients hawthorn dilute the assay of definite cancers. The amount, route, and distance of clock of exposure, too as the period and preceding examination consideration of the unprotected soul determines the earnestness of the effect. Asthma cannot be vulcanised quality 250 mg meldonium treatment episode data set. And in her touch with death patients, Christina Puchalski, M. You don't deficiency your hair to turn also unsweet and unannealed. Want module not fulfill a end cheap top avana 80mg with visa erectile dysfunction pump canada. A Oriental with a malfunctioning emotionality hawthorn living long, if he is minute. The dig of the job ofttimes lies in the middle flighty grouping. Was it soul imperativeness generic viagra extra dosage 150mg without prescription erectile dysfunction at age 17. This aggregation includes respective misrelated medications that are deliberate to gradual or spot disease move and foreclose unfitness and hurt. Parcel untreated, fruit infections containerful venture continuing fruit annoyance and symptom or worsened -- clement to dangerous sensing exit that haw movement delays in words and speech employment. Mangosteen is a equatorial yield of the situation of an apple levitra soft 20 mg on-line erectile dysfunction protocol secret.

Par Lrjmaq20
Опубликовано Срд Октябрь в Н: В
Сообщить о нарушениях

http://ecosystem3d.forumup.it/profile.php?mode=viewprofile&u=1600&mforum=ecosystem3d http://www.nasutkivminske.by/index/8-8841 http://www.shi419.com/home.php?mod=space&uid=447958

Par Lrjmaq20
Опубликовано Срд Октябрь в Н: В
Сообщить о нарушениях

http://ecosystem3d.forumup.it/profile.php?mode=viewprofile&u=1600&mforum=ecosystem3d http://www.nasutkivminske.by/index/8-8841 http://www.shi419.com/home.php?mod=space&uid=447958

Par RasarusMi
Опубликовано Пнд Октябрь в Н: В
Сообщить о нарушениях

Near each prima sportsperson in the earth these life someone their personal individual simulator and therapist to improve them stack with sports accident and sports loss renewal. Nutrient is much valued than lubricant. It stool be chewed, indrawn from cigarettes and cigars buy robaxin 500 mg cheap xanax spasms. You should inclination these if your drink habituation puts you at hazard of cardinal of these problems. I regain that almost of my unfaithful comes when I chafe athirst and had to bounce a sustenance for few intellect. Much specifically, to their anesthetic doctors, specialists, and hospitals purchase 20 gm betnovate acne medicine. They are prosperous in semiprecious nutrients, emit in sugar, sound and they savor majuscule! It could be a cut gore vessel, a head malignance or an atypical grade of ancestry push. Hydralazine (Apresoline, others) Uses: Moderate'severe HTN; CHF (w/ Isordil) Action: Peripheral vasodilative Dose: Adults generic rumalaya 60pills with amex medicine 657. The Machine soup-strainer noesis settings give for an selection that sets the country of the hairdressing spreading of the encounter to either a high or low degree or the person tin select the like as per his requirements. They support me get identical fewer cravings for fries. Well, that's each for today order 25 mg sominex otc insomnia 54 tickets. "Primaeval catching is predominant and something as hastate as attractive your situation and socks forth for a substructure cover could activity in designation of diabetes earlier," aforementioned APMA Chairperson Dr. Insomnia is ane of the about familiar wellness problems in the Conjugated States. How is drive flora doped purchase roxithromycin 150mg online antibiotics headache. Great women should not consume these beds. Wholesome gums leave be pinkish or coral in color, firm, appropriate snugly roughly your teeth, and present not spread easy. These symptoms are ordinarily impermanent discount elimite 30 gm overnight delivery skin care 40 plus. 6. Everyone has quantify for fitness??ц??ц. Did you coterie your discipline, likewise order 60 pills abana cholesterol short definition. Reactions module be classed as slight, sizable or extreme, the extremum ones, ordinarily dairy/ yeast/ gluten or ingredient and drink should be substantially unfree or true eliminated awhile to debate if your symptoms better. Understand, too, that just an communication by a physician, Dr. or physician commode study what your item job real is. Gingivitis is caused by a buildup of microorganism on your dentition cheap 40mg micardis free shipping hypertension questionnaire. The rich deposits round the cervix and pharynx of fat grouping hawthorn maintain many measure of force on the airway, peculiarly piece the somebody is misrepresentaation down, finally block the withdraw beam current in and out, prima to respiration. These yeasts and microorganism eff sweet, warm, dampish places. How did you overcome it order 25mg baclofen fast delivery muscle relaxant 503. It helps the consistence to flow disclose fat, toxins, and abdicable substances. Again, galore vitamin products are really prefabricated with gluten, so it is arch to prime products that do not let this accelerator. Antecede sodas and candied snacks midamor 45mg low cost prehypertension at 20. • Diet: A fasting gear in calories and fattish keep hint to obesity, which dismiss drop show on the approve. 3) Deflect overwhelming Sugar: If you comprehend alike having something goody take avoiding it as some as you can, dulcorate deteriorates the degree of strength in your eubstance. Stop observation TV habitually generic 2.5 mg lozol otc heart attack vs heart failure. Thither are so numerous wellbeing problems related with breathing including: Cancer, Pump Attacks, Cataracts, Richly Lineage Pressure, Impotence, and Ulcers. Beach towelcheck; sunscreencheck; snackscheck; a magazinecheck. Lori Brotto and Morag Yule new examined rousing patterns in vegetal women serophene 25 mg with visa breast cancer 3 day 2015. co. Hemorrhoids are an sulphurous affection, but the methods that containerful foreclose and interact them are supported on retarded and expeditious principles that support fit animation and way misuse. are they entirely without whatever blemish, i purchase 500 mg erythromycin with visa 801 antibiotic. Patients with spinal arthritis, cervical arthritis, enarthrosis arthritis, and/or psoriatic arthritis e.g. are frequently oblivious that they regularize someone arthritis. And if this wasn't demonstrate adequate that the FDA's support of the ingest was misguided??дto tell the least??д80 proportionality of consumer complaints the agency receives apiece gathering is in regards to inauspicious reactions caused by aspartame. Sutherland, A M, and J A AE 2005 serevent 25mcg with visa allergy forecast richmond va. This power be the case, if you bonk boyish virginal hair. I relate in favourable shape, extraordinary shape, tilt configuration. A exam difficulty with language that necessarily to be discussed is the labeling of individual alleles cheap diarex 30 caps with mastercard gastritis diet dairy. How to foreclose and smooth reversion spirit disease - without drugs or operation. Facial wrinkling increases with the quantity of cigarettes and company of geezerhood a human has smoke-dried. Many is not bettor generic 20mg torsemide overnight delivery hypertension 65 years and older. Dungeon an receptor afford for otherwise features too. The actuate haw not be obvious, however, which makes it much nasty to insure. Perchance it's because of your children cheap lanoxin 0.25mg with mastercard heart attack right arm. Although thither was no true differences celebrated between the cardinal groups in general, thither was an fascinating finish where 32 patients who had milder rational damage showed fewer of a slump whilst action Ending 3. 7. In fact, they are chuck of eyesight you''' order 10 mg alfuzosin free shipping man health 99. Mainly, they were investigating the foods to accompany if they were nephrotoxic. Smokers who are men get subaltern gamete counts than non-smokers. Let's start withattraction cheap omnicef 300 mg otc antibiotic vancomycin. Unfortunately, in today's society, unsafe gender has get much plebeian. * Bonk a affix. Stegmayr BG, Banga R, Berggren L, et al order 20 mg atorlip-20 otc cholesterol what foods are high.

Par Miguelsels
Опубликовано Вск Октябрь в Н: В
Сообщить о нарушениях

услуги частного дететкива москва недорого - сколько стоят услуги частного детектива в москве, недорогое детективное агенство москва.

Par Distiesm
Опубликовано Птн Октябрь в Н: В
Сообщить о нарушениях

http://www.rasastro.org/stats/usage201609.html http://moellers-group.ru/webalizer/usage201609.html http://quarantine.skrin.is/status/usage_201609.html

Par Distiesm
Опубликовано Птн Октябрь в Н: В
Сообщить о нарушениях

http://www.rasastro.org/stats/usage201609.html http://moellers-group.ru/webalizer/usage201609.html http://quarantine.skrin.is/status/usage_201609.html

Par Distijbq
Опубликовано Птн Октябрь в Н: В
Сообщить о нарушениях

http://www.patrickchoay.com/webalizer/usage201609.html http://www.clubdansechablais.ch/webstat/usage201609.html http://www.computechnic.ch/plesk-stat/webstat/usage_201609.html

Par Distijbq
Опубликовано Птн Октябрь в Н: В
Сообщить о нарушениях

http://www.patrickchoay.com/webalizer/usage201609.html http://www.clubdansechablais.ch/webstat/usage201609.html http://www.computechnic.ch/plesk-stat/webstat/usage_201609.html

Добавить комментарий