Много програмисти на практика не успяват да следят за всички новости, които се появяват в езика за програмиране PHP. Обикновено, когато излиза следващата версия, просто се хвърля едно око на списъка с промените и рядко новите възможности се използват в практиката.
Тази книга ще позволи на вече работещите с РНР програмисти да наваксат пропуснатото. Тя е ориентирана към онези, които се интересуват от съвременните тенденции в РНР програмирането и/или които са останали в миналото, използвайки техники, характерни за старите версии.
Книгата се състои от три части. В първата се описват новите възможности и добрите практики. Втората е посветена на тестването и дебъгването на кода. Третата е изключително практически ориентирана. В нея ще намерите множество най-различни примери, които могат да ви послужат във всякакви проекти – парсинг на CSV и XML файлове; трикове с Magento API; генериране на XML файлове; импортиране в база данни; библиотеката cURL; работа с електронна поща.
Ще разберете как да разработите прост шаблонизатор и как да защитите сайта от XSS атаки и SQL инжекции. Обърнато е внимание и на избор на среда за разработка на PHP приложения.
Кодът на тези полезни за практиката примери е предоставен от автора за безплатно сваляне и ползване.
Съвременни подходи за програмиране с PHP 7
Съдържание
Въведение…7
Част I. Нови възможности и добри практики
Глава 1. Вчера, днес и утре…10
1.1. Вчера…10
1.2. Днес…11
1.3. Бъдещето…12
Глава 2. Съвременни възможности на PHP…14
2.1. Пространства от имена…14
2.1.1. Обща концепция…14
2.1.2. Деклариране на пространство от имена…16
2.1.3. Псевдоними…17
2.2. Типажи (traits)…19
2.3. Генератори…20
2.4. Затваряния (closures)…22
2.5. Zend OPcache…23
2.6. Вграден уеб сървър…26
Глава 3. Съвременни стандарти…28
3.1. Междуплатформено взаимодействие…28
3.1.1. Интерфейси…29
3.1.2. Автоматично зареждане…29
3.1.3. Стилове…29
3.2. Въведение в PSR…30
3.3. PSR-1…30
3.3.1. Общи положения…30
3.3.2. Файлове…31
3.3.3. Имена на пространствата от имена и имена на класовете…33
3.4. PSR-2…34
3.5. PSR-3…36
3.5.1. Спецификации…37
3.5.2. Пакет…40
3.5.3. Интерфейсът PsrLogLoggerInterface…40
3.5.4. Интерфейсът PsrLogLoggerAwareInterface…43
3.5.5. Класът PsrLogLogLevel…44
3.6. PSR-4…44
3.6.1. Спецификация…45
3.6.2. Примери…46
Глава 4. Компоненти…47
4.1. Запознаване с РНР компонентите…47
4.2. Компоненти и фреймуъркове…48
4.3. Търсене на компоненти…49
4.4. Инсталиране на Composer…51
4.5. Инсталиране на РНР компоненти…52
4.6. Практически пример с използването на компонент…53
Глава 5. Препоръки към програмистите …56
5.1. Санитаризиране и проверка…56
5.2. Пароли …60
5.3. Работим с дата, време и часови пояси…64
5.4. Потоци…67
5.5. Грешки и изключения…68
Част II. Разгръщане, тестване и оптимизация
Глава 6. Избор на хостинг…74
6.1. Виртуален хостинг…74
6.2. Виртуален частен сървър (Virtual Private Server, VPS)…76
6.3. Виртуален специален сървър (Virtual Dedicated Server, VDS)…77
6.4. PaaS…78
6.5. Физически сървър…79
Глава 7. Подготовка на сървъра…81
7.1. Избор на уеб сървър: Apache или nginx…81
7.2. Настройка на сървъра…82
7.2.1. Вход по SSH…82
7.2.2. Актуализиране на пакетите…83
7.2.3. Създаване на потребителски акаунт…83
7.2.4. Забраняваме вход като root по SSH…84
7.3. PHP-FPM…85
7.3.1. Инсталиране…85
7.3.2. Обща настройка…88
7.3.3. Конфигурация на пуловете…89
7.4. Уеб сървърът nginx…90
7.5. СУБД MySQL…94
Глава 8. Тънка настройка на сървъра…99
8.1. Ускорение чрез преминаване на нова версия на PHP…99
8.2. Конфигурационният файл php.ini…100
8.2.1. Параметри на паметта…101
8.2.2. Zend Opcache…103
8.2.3. Максимално време за изпълнение…106
8.2.4. Качване на файлове…107
8.2.5. Обработка на сесии…107
8.2.6. Буферизация на изхода…107
8.3 Оптимизация на MySQL…108
Глава 9. Шаблони за дизайн…113
9.1. Въведение в шаблоните за дизайн…113
9.2. Шаблонът „Стратегия“…114
9.3. Шаблонът „Адаптер“…115
9.4. Шаблонът „Фабрика“…116
9.5. Шаблонът „Сек“…118
Глава 10. Тестване…120
10.1. Запознаване с PHPUnit…120
10.2. Assert методи…124
10.3. Работа с изключения…125
10.4. Принадлежности…127
10.5. Набори от тестове…129
10.6. Пропускане на тестове…130
Глава 11. Профилиране…131
11.1. Какво е профилиране?…131
11.2. Типове инструменти за профилиране…132
11.3. Xdebug…132
11.4. XHProf…133
Глава 12. Виртуалната машина HHVM…136
12.1. PHP и Facebook…136
12.2. Ще бъде ли подходяща HHVM именно за вас?…138
12.3. Инсталиране на HHVM…139
12.4. Настройка на HHVM…141
12.5. Езикът Hack…143
12.6. За производителността…144
Глава 13. SEO грешки, допускани от програмистите…147
13.1. Приятелски URL…147
13.2. Идентификатори на сесии…151
13.3. Производителност на сценария…152
13.4. Мобилна версия на сайта…153
13.4.1. За какво е необходима мобилна версия?…153
13.4.2. Препоръки…154
13.4.3. Класът MobileDetect…155
13.3.4. Как да създадем мобилна версия на сайта?…157
13.3.5. Скорост намобилната версия…160
Част III. Практическа част
Глава 14. Парсинг на CSV файл…164
14.1. Парсинг на CSV файл…164
14.2. Разбор на CSV редове на стари версии на PHP (до версия 5.3)…165
Глава 15. XML файлове…168
15.1. Парсинг на XML файл…168
15.2. Генериране на XML файл…170
15.3. Нестандартният формат Excel 2003 XML…172
Глава 16. Импортиране в базата данни …176
16.1. Импортиране на ценова листа от CSV формат в база данни MySQL…176
16.2. Преобразуване на Excel файлове в CSV с помощта на PHP. Импортиране на ценови листи от Excel…182
16.3. Съществено ускорение на импорта в Magento…183
16.4. За експорта…188
Глава 17. Трикове с Magento API…189
17.1. Получаване на всички опции (свойства) на атрибут…189
17.2. Получаване на информация за продуктите в поръчката…190
17.3. Обновяване на правилата за маркетинг…191
17.4. Получаване на списък с продукти и друга информация чрез SoapClient…191
17.5. Директни заявки към базата данни на Magento…192
17.5.1. Свързване към базата данни…193
17.5.2. Получаване на имената на таблиците…194
17.5.3. Методът fetchAll()…194
17.5.4. Методът fetchCol()…195
17.5.5. Методът fetchOne()…195
17.5.6. Запис в базата данни…196
Глава 18. Библиотеката cURL…198
18.1. Получаване на файл от отдалечен сървър с помощта на cURL…198
18.2. Авторизация на отдалечен сървър…201
18.3. Получаване на файл след авторизацията на отдалечен сървър…204
Глава 19. Работа с електронна поща…206
19.1. Изпращане на писма. Създаване на сценарий за масово изпращане на ценови листи…206
19.2. Получаване на писма по протокола IMAP…210
19.3. Използване на сървъра за активиране на програмни продукти VMProtect. Изпращане на HTML съобщения с помощта на mail()…212
Глава 20. Други полезни примери…215
20.1. Създаване и използване на прост шаблонизатор…215
20.2. Правилна обработка на предадените от потребителя данни. Функцията input_filter…219
20.3. Защита на сайта от SQL инжекции…222
20.3.1. XSS атаки…224
20.3.2. SQL инжекции…225
20.4. Работим с база данни без разширението mysql (PHP 7)…227
20.4.1. Свързване към базата данни по нов начин…227
20.4.2. Предаваме заявки…229
20.4.3. Получаване на данни…232
20.4.4. Заявки с INSERT и UPDATE…234
Глава 21. Вместо заключение: избор на среда за разработка…236
21.1. Необходимо ли е специално програмно обезпечение?…236
21.2. Notepad2…237
21.3. Zend Studio…238
21.4. PhpStorm…239
21.5. NetBeans…240
21.6. Текстовият редактор Atom…242
21.7. Sublime Text…243