Category Archives: PHP

PHP Tricks, Tips, Ideas, Other Shit

Про PHP и его кавычки

Ох, денёк… жарко, пот градом, состояние не рабочее, до отпуска далеко. И тут по блогролу прокатывает прекрасная статья о кавычках в PHP. О как они вкусно и красиво расписали, какие кавычки лучше всего использовать и как работать с конкатенацией. В десяточку. А то всё святые войны, ” или ‘ … Что быстрее, что медленнее, а тут как и почему. Теперь можно смело убивать всех, кто делал “бла бла $var бла бла” и тем более “$var” (да и такие извращенцы есть).

А я молодец, я копчиком чуял что одиночная кавычка намного лучше чем двойная, и что конкатенация с одиночной есть правильно. Надо будет по этому поводу себе вкусного пива купить. Нет, потребовать, что-бы купили.

ZEND, фреймворк, прочее и PEAR во фреймворках

О! А я и не заметил, что ZEND сменил дизайн для свого фреймворка… Зелёненький логотипчик… Опять такой гламурненький, для PHP уж очень гламурненький… Последний релиз аж 18 апреля – что-то они не спешат. Не пора ли поджимать в этом плане? Ах… ну да, а зачем ;-)

Скачал их дистрибутив. В нутри папка: incubator… Это специально так, об искуственном “высиживании”? Что-то я не вижу пока там ничего вкусного… Простите, а есть где реальный пример, что-бы на этом летало что либо?

Вообще, осматривал фреймворки на PHP, очень часто встречал слово PEAR, что меня сразу заставляло от этого дела отказаться (т.е. не смотреть дальше). Простите меня, но для фреймворка использовать PEAR – зверство и свинство. Я что, должен мало того, во фреймворке разобраться, так ещё и PEAR ставить нужной версии?

Делал свой маленький набор Web-разработчика

С самого утра собираю маленький (334 MB) наборчик для себя, что-то вроде Денвера. Вот только под себя и для тех кто рядом… Входит в него: Apache 2, MySQL 3.23, MySQL 4.0, MySQL 4.1, MySQL 5.0, PHP 4.4.2 и phpMyAdmin. Всё устанавливается как сервисы по запуску одного .bat файла, удаляется так-же (сервисы с префиксами, и по-этому если что-то из этого списка стоит, его достаточно будет остановить). Надо только что-бы был свободен 80 порт для Apache и 3305-3308 для MySQL. Никаких файлов копировать в системные каталоги не надо. Причём тут-же ещё и дебугер установлен (для особо продвинутых). Если архивом, то весит 112 MB.

По хорошему там не хватает ещё SMTP/POP3 какого сервера, для отладки рассылок, отсылок, засылок всяких (я думаю это был-бы Mercury Mail Transport System)… И мануала, как что делать… Мне следовало такую вещь собрать уже давно, что-бы небыло таких проблем и глупых ситуаций…

В принципе, ничего сложного – всё складываем рядом в один каталог, так что бы легко можно было кидать на флешку или болванку, DLL от PHP (и сам php4ts.dll и из каталога dll) кидаем к Apache в каталог bin, жёстко прописываем пути. Всё это легко ставиться из командной строки (как не странно для MS Windows 2000/XP) и без всяких srvany.exe. Просто данный софт (Apache, MySQL) отлично сам преспособлен к такой работе.

Об изобретении велосипедов на PHP и клонах

Берём Rails, долго на них смотрим и изучаем. Даже несколько внутренних проектов делаем. Приятно, удобно, но! В результате надобности интегрироваться в старые проекты на PHP, в результате желаний клиента что-то с чем-то совместить, мы всё равно берём PHP (так как кругом всё упорно на PHP… Одно PHP у нас даже кто-то Rails с phpNuke сравнивал). Жаль… да? А вот и нет! Берём наработки, скопившиеся в закромах мозга в течении 5 лет. Берём знание по PHP 4, серверочек для разработок и за дня два собираем маленький, лёгкий клон Rails под один проект (а кто знает что будет потом). Да, не такой навороченный, да, не такой отттестированный, но он позволяет нам в течении нескольких дняй без особого программирования и не писания запросов складывать несколько десятков форм с максимальной отдачей. Приятно. Rails – супер! Даже как муза, как источник для вдохновления и подражания. Пусть там overloading через одно место с массивами, пусть там вместами запросы не совсем оптимизированны – но большая половина рутины уже сделана один раз. Мне нравиться, мне удобно… А показать… Вот не знаю… Может однажды – не могу обещать – оно не мне пренадлежит.

Я знаю, велосипеды изобретать не хорошо, но я делаю велосипед строго под себя, именно такой, как мне нужен – с реактивным двигателем и системой ABS, cо спойлерами и навороченной аудио-системой. Но всё равно – велосипед.

Wordwrap и Multibyte String Functions

PHP не перестаёт удивлять… Языку 10 лет, нет даже больше… А с функциями полный бардак я бы сказал… Сегодня мне понадобилось разбить юникодную сторку на строки, как это делает wordwrap… Естественно я пошёл в Multibyte String Functions… и что вы думаете? Я нашёл её эквивалент? Нет… нету… даже никаких замашек… Получается, что простую строку врапить им надо, а мультибайтовую не надо… Мультибайтовые строки PHPисты не врапят… Ну если тока своими силами… Интересно сколько человек в день наступают на эти грабли? Неужели нельзя продублировать стандартные функции с однобайтовыми строками для мультибайтовых? Ведь, XXI век на дворе, везде шагает юникод…

Я прекрасно понимаю, что вот если мне надо, то я могу пойти и попытаться на C (Си) сам реализовать эту функцию (заодно выучив C, и разобрав исходники PHP), пересобрав потом PHP, но я не могу это сделать на всех хостингах, где мне это надо… И даже после контрибуции мей, если бы я её сделал, оно на хостинги доходило-бы в течении 2-4 месяцов…

Вот так и мучаешься всё время, таская за собой разные самопальные библиотеки, которые, вроде-бы должны быть давно и везде…

PHP и иконки

Блин… PHP оказывается не умеет распознавать такой вид графики, как иконка. Да да, этот самый .ico ему не знаком. getimagesize скажите вы? Фигвам! Только GIF, JPG, PNG, SWF, PSD, BMP, TIFF(intel byte order), TIFF(motorola byte order), JPC, JP2, JPX, JB2, SWC, IFF, WBMP, XBM… Кто из них ICO? А никто… И не надо про BMP, не надо! Да они там немного совместимы, но только маленько… Вот ходи и ищи теперь, как определить – иконка это или нет…

WordPress – настройка фидов после изменения шаблонов

Парадоксально немножко, но, после того, как вчера перебирал кой какие косточки WordPress, меня таки убило то, что, имея возможность настроить свой шаблон, ты не можешь никак изменить что выводиться в фидах WordPress. В шаблоне, не выходя за рамки его, при помощи немножко магии и немножко само-созданных плугинов, можно добиться интересных результатов, вплоть до изменения логики вывода на тебе нужный лад (чем я собственно и занимался). Причём без малейшей модификации любого другого файла из самого WordPress, опираясь только на Custom Fields и знания возможностей системы. Безболезненно и совместимо с обновлениями (ну по крайней мере я так считаю).

После таких моих изменений (по задумке всего плугина/шаблона/режима), потребовалось изменить вывод фидов (RSS и ATOM), бо там появились лишние ноды, которые добавляются WordPress, плюс изменить кой-какие на значения с Custom Fields. До этого момента я не ковырял совсем тему фидов в WordPress, а как поковырял, мне плохо стало… Они не могут быть как либо изменены через шаблоны/плугины. Они сделаны хард-кодом… И конфигурация у них мало-мальская… И если мне не нужен wfw:commentRSS или я хочу изменить значение link на какое-то своё, особенное, я должен лесть, так сказать, в системные файлы, тем самым, обязывая себя каждый раз, после обновления WordPress, некоторых особей, быть осторожными на обновлении, если они будут использовать это создание… Следовательно, и установка такого плугина/шаблона/режима потребует больших усилий, а возможно и проблему создаст… Я лично не люблю изменять файлы системы (устанавливать так называемые патчи), при установки каких либо не стандартных возможностей, а предпочитаю, что бы это было реализовано через плугины/шаблоны. А менять придётся… Придётся… А ой как не хочется…

O WordPress ещё можно говорить долго… В нём есть ещё странного и неизведанного для меня (а может для многих)… Особенно то, как в нём, через функции идёт обращение к методам объектов через global в функции, а в методах объектов, опять-же через global уже в методе, идёт обращение к переменным в Global Scope…

Вечерний WTF? или “А зачем в PHP переменные?”

Я не знаю, где народ берёт такие грибы, или траву, или как они косяки забивают, что у них возникают вопросы: А зачем в PHP переменные? Ведь строки можно и без них выводить через echo!
И пример: зачем делать

<html>
<body>
<?php
$actor="Marlon Brando";
echo $actor;
?>
</body>
</html>

если можно

<?php
echo "Marlon Brando";
?>

Я тоже хочу такой травы, грибов и так забивать косяки… Забивая целые страницы (всё, что надо и не надо) в переменную через конкретизацию и делая echo, даже не думая о том, надо ли им это… И это пока вы там думаете о XML, xHTML, шаблонных движках, ORM и прочих заморочках…

Хотя я умею и без PHP и травы с грибами в косяках, на чистом HTML… И даже можно без CSS по идее, только страшновато немного получается…

Да, я знаю, смеяться над новичками и идиотами нельзя… не хорошо… Но они чашу терпения переполняют сразу… я не могу сдержаться… Я не понимаю, почему их в детский сад не возвращают (или их закрыли)?