Слід звернути увагу

Опубліковано: 2009-09-10   08:56:56

PHPТак вже сталось, що я іноді пишу щось в неприємному ключі про мову php. :) Хоча й сам дуже часто нею користуюсь. І як я з часом розумію, причина тут не тільки в тому, що досить багато роботи є для php-програміста, а ще й в тому, що деякі речі дуже просто зробити саме на php. Можливо на python чи ruby ще простіше, однак оскільки я вже дуже звик до php, то сам можу попрацювати в якості такого собі справочного матеріалу, що може багато розповісти і про синтаксиси виклику функцій і про бібліотеки :) Тому для того, щоб написати маленький скриптик на декілька десятків рядків мені в більшості випадків не треба думати, як з python чи ruby.

Вже давно вийшов php 5.3 і хоча більшість хостерів ще не планують перехід на нього, однак як було з взагалі з 5ою гілкою php він раніше чи пізнціше стане основним на більшості хостингів. Тому хочу звернути вашу увагу на декілька аспектів, що можуть стати неприємними сюрпризами при переході

Підключення до БД.
Не знаю чи всюди, однак в збірці під MacOS X php 5.3 вимагає вказувати порт. Наприклад так: $conn = mysql_connect('localhost:3306', 'username', 'password');
Інакше отримаємо помилку, що так і так, а підключитись не вийде. Підозрюю, що причиною тому є новий драйвер для MySQL, що працює тепер напряму, без використання libmysl.
Об'єми пам'яті
Знову ж таки при роботі з БД MySQL виникає проблема з виходом за ліміт доступної для роботи пам'яті. На тому коді, що цілком нормально працював з версією 5.2
Магічні методи
Те, що по мені серйозно вдарило, так це необхідність того, щоб __get, __set, __unset, __isset були нестатичними. Те що вони тепер мають бути завжди public є досить логічним кроком, а от з неможливістю бути статичнми щось не так. Тепер доречі поряд з методом __call з'явився __callStatic (ось тут я цылком погоджуюсь).
Прощавай eregi та split
Якщо Ви користувались запість perl-сумісний регулярних виразів posix-сумісні, то тут Вам буде очікувати неприємний сюрприз з виносом цього функціоналу за рамки основної поставки php. Досить непогано, що функціонал що дублюється починає видалятись з основної поставки php - навіщо зайві функції, що додають плутанини?
Массиви та об'єкти
Тепер масиви та об'єкти відрізняються більше, тому деякі методи для роботи з масивами, що раніше працювали з об'єктами, відтепер будуть працювати лише з масивами.
magic quotes
Magic quotes відмічені для остаточного видалення, тому використання всіх функцій та інструкцій в php.ini буде викликати E_DEPRECATED
Робота з сесіями
session_register(), session_unregister(), session_is_registered() теж відмічені для видалення

Тепер в php можна увімкнути систему циклічної збірки сміття (garbage collector). Про те, наскільки добре чи погано вона працює стане відомо пізніше, однак в цілому враження від php 5.3 окрім перших трьох пунктів з переліку непогані. Здається, що php рухається у вірному напрямку і має всі шанси перетворитись раніше чи пізніше а досиь красиву мову, на яку навіть я перестану нарікати :)

Ну і ще хочу додати вже не про php 5.3. Доволі давно я присав про роботу з числами в php. Одним з пунктів мого невдоволення була наявність переводу числа в рядок в залежності від локалі. Тоді я якось не забув про функцію sprintf, що спеціально призначеня для форматного виведення данних. І тим паче забув (та що й казати, навіть і ніколи не звертав уваги) про те, що для виведення дійсних чисел є два формати %f та %F. Різниця в тому, що перший залежить від встановленої в скрипті локалі, а другий ні.

Так що, вдалого написання коду. Дякую за увагу!

Теги: php
Коментарі: 0
 

Коментарі:

Додати коментар

user

email

url

text

Повідомляти про новікоментарі