Тілдік нұсқаулар

Программалау Парадигмалары

PHP – бұл көпті бағдарламалау техниктерін қолдау қоса алатын жаттығу, динамикалық тіл. Ол жылдар бойы шынайы объектілік модельді PHP 5.0 (2004), анонимді функциялар мен неймспейстерлерді PHP 5.3 (2009), және PHP 5.4 (2012) жылдарында трейттерді қоса алады деп айтарымыз.

Объектілік Программалау

PHP-дің класстерге, абстрактты класстерге, интерфейстерге, өткізу, конструкторларға, клондау, қателерге жаттығу қосумен толықтыруды қамтымайды жаттығу объектілік программалаудың толық ұсынымы бар.

Функционалды Программалау

PHP функционалды программалауды қолдайды: функцияны өзгерту үшін бір атауға айналдыру мүмкіндігі бар. Пайдаланушы тарапынан құрылған және жасалған функциялар өзгертуге айналдырыла алады және динамик түрде шағымдалауға болады. Функциялар басқа функцияларға аргумент ретінде тасылып, функциялар басқа функцияларды қайта шағымдауға болады (бұл “Үлкен-тармақ функциялары” деп аталатын мүмкіндік). Функциялар басқа функцияларды қайта шағымдауға болады.

Рекурсия, функцияны өзінің өзіні шағымдауға мүмкіндік беретін бір мүмкіндік, тілді қолдайды, бірақ көбі PHP коды ітерацияға оралуда.

PHP 5.3 (2009) жылынан бастап бақылау функцияларымен (closure-деректермен) бірге жаңа анонимді функцияларды қосу мүмкін.

PHP 5.4 жылы бақылау функторларын нысандардың мәртебесіне байланыстыру мен callables-терілерді анонимді функциялармен алмасу мүмкіндігін жаңарту көрсеткіштерді қосты.

Meta Programming

PHP supports various forms of meta-programming through mechanisms like the Reflection API and Magic Methods. There are many Magic Methods available like __get(), __set(), __clone(), __toString(), __invoke(), etc. that allow developers to hook into class behavior. Ruby developers often say that PHP is lacking method_missing, but it is available as __call() and __callStatic().

Неймспейстерлер

Жоғарыда аталғаны тұлғалармен PHP әлемінде көптеген дайындар код жасаушылары бар. Бұл онымен, бір библиотеканың PHP коды басқа библиотеканың кодымен бірдей клас атауын пайдалануы мүмкін. Егер ешкімнің кодымен бірдей клас атауы болса, олар бірдей неймспейстерде пайдаланылса, олар қосылып, бір-бірімен бірігіп тұрып жататарды жасайды және мәселен туралып жататарды жасайды.

Неймспейстерлер бұл мәселені шешеді. PHP сипаттама нұсқауларында айтылғандай, неймспейстерлер операциялық жүйе директорияларымен тура келіп, файлдарды “неймспейс” жасайды; екеуі бір атты файлдар айнымас шолу директорияларында бара алады. Солайша, екеуі бір атты PHP кластары да айнымас неймспейстерлерде бара алады. Бұл тездік.

Сіздің кодыңызды неймспейстерге салу маңызды, сондықтан ол басқа жасаушыларды айнымас библиотекалармен қосылмау жасамасынан қорқмауыз.

Неймспейстерлерді пайдалану үшін PSR-4 да белгіленген жолды пайдалануымыз маңызды. Бұл, плагиаттык кодты қолдану үшін стандартты файл, клас және неймспейс кеңістігін ұсыну мақсатын қою.

2014 жылдың қазан айында PHP-FIG бұл стандартты айтысты: PSR-0. PSR-0 мен PSR-4 бірдей пайдаланылуы мүмкін. Соңғысы PHP 5.3 талап етеді, сондықтан көбі PHP 5.2 тек бұзылмайтын бағдарламалар PSR-0-ді өзгертуді ұмытады.

Жаңа қолданба немесе пакет үшін айтыстыру стандартты пайдалану қалайсыздарыңызды PSR-4-ге тырысыңыз.

Стандартты PHP Кітапханасы

Стандартты PHP Кітапханасы (SPL) PHP-мен бірге жасалған және класстар мен интерфейстерді тарату береді. Ол аса тұрғында қажетті деректер структурасы (стек, кеу, тас, және т.б.) жаттығу класстарынан, оларды таратуға арналған итераторлардан жасалады, немесе SPL интерфейстерін реализациялауы келетін сіздің класстарыныздан.

Команда Жолындағы Интерфейс

PHP веб-дайындарды жазу үшін жасалған, бірақ скрипттенген команда жолындағы интерфейс (CLI) бағдарламаларын жасауға арналғанда да пайдалы. Команда жолындағы PHP бағдарламалары тесттік, деплоймент, және бағдарлама әкімшілігі сияқты көптеген орта міндеттерді автоматтауға көмек көміді.

CLI PHP бағдарламалары сіздің бағдарлама кодыңызды тіркесіз, оны өзгерту мен қауіпсіздікке қажет болмайтын веб GUI (графикалық пайдалану интерфейсі) жасамаған кезде қолайлы. Тек ескеріңіз, тек өз CLI PHP скриптілеріңізді көрсетпейіз !

PHP-ді команда жолынан іске асыруды көріңіз:

> php -i

-i опциясы phpinfo() функциясымен сәйкес PHP конфигурациясын басып шығарады.

-a опциясы интерактивті шеллді ұсынады, сияқты ruby-нің IRB немесе python-нің интерактивті шелліне ұпай қосады. Басқа пайдалы команда жолындағы опциялар бар.

Өйткені, біздің “Сәлем, $name” CLI бағдарламамызды жасауға талап көрсетейік. Оны сынамау үшін төмендегі сипаттаманы алады “hello.php” атты файлды жасаңыз.

<?php
if ($argc !== 2) {
    echo "Қолдану: php hello.php <аты>" . PHP_EOL;
    exit(1);
}
$name = $argv[1];
echo "Сәлем, $name" . PHP_EOL;

PHP сценарийінізді іске асыруда қолданылатын аргументтерге негізделген екі арнайы өріс жасайды. $argc - бұл аргументтердін санын қамтындауға арналған бүтін сан, $argv - бұтін аргументтердін мәнінің бірікмесі. Бірінші аргумент әрі көмекше сценарий файлының аты болады, міндетті түрде “hello.php” бұл мәнінде.

exit() анықтамасы, команданың қатесін білдіру үшін ненеге баратын емес сан боларымыз. Жиі байланысатын шығару кодтар мұндай жерде табылмайды.

Біздің сценарийді, жоғарыда, команда жолынан іске асыруды толтыру үшін:

> php hello.php
Қолдану: php hello.php <аты>
> php hello.php Әлем
Сәлем, Әлем

Xdebug

Бағдарламалау жасаушылығында ең пайдалы құралдардан бірі дебаггер. Ол сізге кодыныздын орындалуын бақылау мен тізбегінің мазмұнын бақыламауға мүмкіндік береді. Xdebug, PHP дебаггері, Breakpoints және stack бақылау жасау үшін көптеген IDE-лерді пайдалана алады. Сондықтан PHPUnit және KCacheGrind кез-келген кодты байланыс анализі мен кодты профилизациялау үшін пайдалана алады.

Өзгеріске өзінізді қандай жаттығуға қалайысыздығыңызды байланысататын болса, var_dump()/print_r() қолдана бірмек, жауапты табу мүмкін емес - сіз дебаггерді пайдалануға мүмкіндік беретіндігін байқайсыздарыңыз.

Xdebug орнату мүмкін болады, бірақ оның ең маңызды мүмкіндіктерінің бірі “Қашықтықты дебаглау” - егер сіз кодты жергілікті дайындасында дайын тест ету қайта нысандасаңыз, “Қашықтықты дебаглау” бұл сізге көмек көрсететін мүмкіндік болады.

Салтанатта, сіз Apache VHost немесе .htaccess файлында бұл мәндерді өзгертуіз:

php_value xdebug.remote_host 192.168.?.?
php_value xdebug.remote_port 9000

“remote host” және “remote port” сіздің локал компьютеріңізге және IDE-ңізді өздігінізге көруге орнатылатын портқа сәйкес келеді. Содан кейін IDE-ңізді “қосылуларды күту” режиміне қоятын және URL-ді жүктеу қажет:

http://your-website.example.com/index.php?XDEBUG_SESSION_START=1

Сіздің IDE-ңіз қазір сценарий орындалатын уақыттағы ағымдылығын персоналдайтып, бейнелерді орнату мен жадыдагы мәндерді тексеру мүмкіндігін береді.

Графикалық дебаггерлар кодты бағыттайтын, айнымасын тексеру жасайтын және тиісті жұмыс уақытша кодты еңгізу мүмкіндігін береді. Көптеген IDE-лерде Xdebug-мен графикалық дебаглауға қосу жалпы немесе плагинді қолдану мүмкін. MacGDBp, macOS-үшін тегін, ашық кодты GUI-сы болатын стандартты Xdebug.