Обновить
128K+

PHP *

Скриптовый язык общего назначения

19,1
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Ваш стиль программирования

Время на прочтение1 мин
Охват и читатели12K

Хотелось бы узнать, какой стиль написания используют наши хабракодеры. Естественно на вкус и цвет, а также на способы реализации товарищей нет, но тем не менее. Не секрет, что существует достаточное количество вариантов оформление программного кода, да и не обязательно придерживаться какого-то из них. Вот некоторые примеры, которые были найдены на просторах интернета:

дальше

Идеальный шаблон, какой он?

Время на прочтение1 мин
Охват и читатели1.2K
Тем, кто ежедневно стыкается с разработкой сайтов, наверняка приходится работать с шаблонами, вот и мне пришлось. Как всегда, наличие выбора отбирает свободу действия. Типов шаблонов и готовых решений – огромное множество, я остановился на таких вариантах:

Вариант 1.

<!--Begin[News_List]-->
 <!--Begin[News_ListItem]-->
  {date} <a href="{link}">{title}</a>
  <br />
  {header}  
 <!--End[News_ListItem]-->
 <!--Begin[News_ListItemEdit]--><a href="#">edit</a><!--End[News_ListItemEdit]-->
<!--Begin[End_List]-->

Достоинства: понятный, читабельный в паре с html
Недостатки: громоздкий

Вариант 2.

<? foreach($news as $item) { ?>
<?=$item->date?> <a href="<?=$item->link?>"><?=$item->title?></a>
<br />
<?=$item->header?>
<? if($permitted) { ?><a href="#">edit</a><? } ?>
<? } ?>

Достоинства: шустрый
Недостатки: нечитабельный, так и хочется дописать логику к отображению

Вариант 3.

<component name="news">
 <item>
  {date} <a href="{link}">{title}</a>
  <br />
  {header}   
  <secured roles="{roles}"><a href="#">edit</a></secured>
 </item>
</component>

Достоинства: понятней некуда, присутствует что-то родное 
Недостатки: нечитабельный в паре с html

В примерах представлено отображение списка новостей.
Хотелось бы прийти к оптимальному результату, по этому интересует мнение опытных front-end разработчиков. Возможно, есть лучше варианты — буду рад рассмотреть.

Расширение файла средствами PHP

Время на прочтение2 мин
Охват и читатели105K
Получить расширение файла — не самая сложная задача. Но подходов к ее решению может быть несколько. Давайте попробуем рассмотреть несколько возможных вариантов и понять принципы их работы.

Считаете, что вопрос пустяковый и все тут просто как 2 пальца? Может быть, только недавно мне встретилась занятная бредострочка с толстенным регулярным выражением и все для того, что бы просто получить несколько символов в конце строки после последней точки. Зачем? Итак, начнем с пяти наиболее распространенных способов. Без использования регулярных выражений (только не подумайте, что я считаю их злом). Писать буду как просто и доступно, это не научная статья, а авторская заметка.
Поехали?

Что такое полиморфизм на самом деле. В PHP он тоже существует.

Время на прочтение3 мин
Охват и читатели99K
Написать этот пост побудила недавняя статья о полиморфизме. Она вызвала много споров, но знающие люди понимают, что автор написал скорее о наследовании и о переопределении методов, чем о полиморфизме. Не буду говорить ни хорошее ни плохое о той статье, а просто расскажу, что такое полиморфизм на самом деле. Дабы начинающие php-программисты не остались в заблуждении.
Читать дальше →

Полиморфизм для начинающих

Время на прочтение7 мин
Охват и читатели1M
Полиморфизм — одна из трех основных парадигм ООП. Если говорить кратко, полиморфизм — это способность обьекта использовать методы производного класса, который не существует на момент создания базового. Для тех, кто не особо сведущ в ООП, это, наверно, звучит сложно. Поэтому рассмотрим применение полиморфизма на примере.
Читать дальше →

PHP класс для работы с Яндекс.XML

Время на прочтение3 мин
Охват и читатели14K


Уже продолжительное время доступен сервис Яндекс.XML — сие есть не что иное, как поисковый сервис, который позволяет делать автоматические поисковые запросы к Яндексу и публиковать его ответы у себя на сайте и данный пост посвящен приручению сего зверя с использованием PHP.
Читать дальше →

Хватит изобретать велосипеды!

Время на прочтение5 мин
Охват и читатели2.5K
Здравствуйте, уважаемые хабрадевелоперы.

С вашего позволения я немного пофилософствую на тему развития нас, как сообщества девелоперов, использующих замечательный язык PHP. Заранее скажу, что многие могут не поддержать мою точку зрения и я буду рад обсудить это в комментариях. Итак, приступим…

Немного истории


Так исторически сложилось, что PHP считается простым языком.
Изначально он создавался для быстрого написания небольших динамических веб-приложений низкоквалифицированным (читай — неопытным и начинающим) веб-разработчиком.
Аббревиатура PHP в далеком 1994 году означала «Personal HomePage».

С тех пор прошло 14 лет, движок PHP переписывался с нуля два раза (если мне не изменяет память), обрастая «взрослой» функциональностью и разбивая стереотипы своей ограниченности проектами уровня Фейсбука и Википедии.
Стоит подождать ещё самую малость и выйдет PHP 5.3 с долгожданными неймспейсами, незаслуженно игнорируемым Late Static Binding и некоторыми добавками синтаксического сахара.
Читать дальше →

PHP-5.3, phar extension — нужен ли он по дефолту?

Время на прочтение1 мин
Охват и читатели1.2K
В PHP-5.3 появилось расширение phar, причем в последних версиях оно включено по умолчанию. Однако, после того как я наблюдал следующую картину: сегфолт при использовании стандартной функции is_file() (который на самом деле является прямым следствием того, что вместе с PHP у меня установился этот самый phar) — после этого я крепко задумался, нужно ли это расширение ставить по умолчанию и не лучше ли было бы ставить его, наоборот, только по требованию.

Вкратце: расширение объявляет «перехватчики» — interceptors — для вызовов некоторых функций, вовсе не входящих в это расширение. Это поведение, по очевидным причинам, для многих нежелательно — это лишние тормоза, лишние баги (как доказывает вышеприведенная ссылка на bugs.php.net).

Могу добавить, что один из ведущих разработчиков PHP уже высказался за то, чтобы не включать phar по дефолту. А что думаете вы?

session_write_close() может стать твоим другом

Время на прочтение1 мин
Охват и читатели14K
Однажды я столкнулся с такой проблемой: на странице сайта с помощью PHP-скрипта выдавался пользователю видео-контент (подробнее в моей статье «flash-видео на веб-страницах и PHP»).

Скрипт, «отдающий» видео, работал долго (примерно столько же, сколько длился видео-ролик: мы установили контроль скорости скачивания согласно битрейту). Так вот, если в период просмотра видео вы открывали новый таб в браузере с другой страницей этого же сайта, возникала ошибка.

Ларчик открывался довольно просто. На сайте использовалась авторизация, основанная на стандартных PHP-сессиях. Так вот, когда сессия стартуется, сессионный файл блокируется, и до тех пока сессия не закроется и файл не разблокируется, никто не может открыть файл сессии. По умолчанию сессия закрывается при окончании работы скрипта. Мы добавили непосредственно перед выдачей видео-контента строку session_write_close() — вуаля, все заработало.

Поскольку совсем недавно товарищ пожаловался на точно такую же проблему и был рад полученной подсказке — я решил поделиться этим «хинтом» с хабралюдьми.

Яндекс поиск на вашем сайте.

Время на прочтение2 мин
Охват и читатели7.7K
Приведу пример класса, который можно использовать в качестве поисковика на вашем сайте.
Для работы класс использует сервис Яндекс.XML. В свободном режиме они разрешают использовать до 1000 запросов в день. Условия использования сервиса на xml.yandex.ru

Яндекс.XML — это сервис, позволяющий делать автоматические поисковые запросы к Яндексу и публиковать его ответы у себя на сайте в собственном дизайне. Поиск от Яндекса — это быстрый доступ к сотням миллионов документов и изображений.

С помощью Яндекс.XML вы можете предлагать своим пользователям:
  • поиск по вашему сайту (в той мере, в какой этот сайт проиндексирован Яндексом);
  • поиск по сети или ее части (регион, отрасль), результаты которого могут показываться на вашем сайте и в вашем дизайне, и сервисы на его основе — Яндекс.XML открывает большие возможности для исследователей поисковых систем и преподавателей;
  • поиск изображений, опубликованных в сети.

Читать дальше →

Zend Studio for Eclipse 6.0.1.1rc1

Время на прочтение1 мин
Охват и читатели786
Предварительная версия популярной среды разработки для PHP от Zend.

Наткнулся случайно на официальном форуме, там искал возможность исправления бага зависания во время «building workspace». Пока полет нормальный, у кого есть подобная проблема, советую обновиться.

Скачать:
Linux — downloads.zend.com/studio-eclipse/6.0.2_preview/ZendStudioForEclipse-6_0_1_1RC1.tar.gz
Windows — downloads.zend.com/studio-eclipse/6.0.2_preview/ZendStudioForEclipse-6_0_1_1RC1.exe
MacOS — downloads.zend.com/studio-eclipse/6.0.2_preview/ZendStudioForEclipse-6.0.1.1RC1.dmg

Источник:
www.zend.com/forums/index.php?t=msg&th=6084&start=0&S=67245387af6142400e10f1c2ee920787

Когда критическая ошибка приносит радость…

Время на прочтение1 мин
Охват и читатели2K
Прочитав недавно на пьяную голову «Обработка ошибок и исключений в PHP», решил применить полученные знания на практике. Честно, ещё 6 часов назад не знал, куда это меня приведёт, но в итоге теперь мои скрипты при ошибка зажигают вот такой симпотный экран:


Хотите узнать, как я этого добился?

Ближайшие события

Видео с PHPConf 2008 — ~20 часов видео

Время на прочтение1 мин
Охват и читатели731

Выпущен последний релиз PHP 4 — PHP 4.4.9

Время на прочтение1 мин
Охват и читатели3.3K
Еще вчера вечером был выпущен последний релиз PHP четвертой ветки. В нем исправлены несколько серьезных уязвимостей и обновлена версия PCRE до 7.7.

На этом поддержка и обновления PHP 4 заканчиваются. Хотя уже давно широкими шагами идет по миру PHP 5, на многих хостинговых площадках все еще остается четверка (часто совместно с пятеркой).

Итак, сегодня эпоха PHP 4 официально закончена.

Абстракция БД

Время на прочтение4 мин
Охват и читатели5.2K
Когда я только начинал писать на PHP, ООП я владел, пожалуй, на уровне синтаксиса, не более. В то время мне вполне хватало функций mysql_*. Со временем, опыта становилось больше, я начинал задумываться об оптимизации. Этот топик описывает эволюцию моего кода.
Читать дальше →

smarty перестал дружить с php.net?

Время на прочтение1 мин
Охват и читатели860
Очень странно — захожу на smarty.php.net и созерцаю там вместо веб-сайта популярного шаблонизатора страницу об ошибках в php (http://bugs.php.net).
Интересно, к чему бы это?

(Официальный сайт Smarty так же доступен по адресу www.smarty.net)

PHP 5.3 alpha

Время на прочтение1 мин
Охват и читатели875
НУ что — вот мы и дождались первый альфа релиз PHP5.3!

Из нововведений:
  • Namespaces ( пока правда без документации )
    Late static binding и __callStatic
    лямбда-функции и замыкания
    добавлены некоторые экстеншны ( intl, phar, fileinfo и sqlite3 )
    Опциональная поддержка MySQLnd вместо libmysql
    отказ от поддержки Windows старше чем Windows 2000 (Windows 98, NT4 и т.д.)
    добавление нового синтаксиса: NOWDOC, ограниченный GOTO, сокращенный тернарный оператор (?:)


    P.S. обращаю внимание на авторское замечание: THIS IS A DEVELEOPMENT PREVIEW — DO NOT USE IT IN PRODUCTION!

Обработка ошибок и исключений в PHP

Время на прочтение6 мин
Охват и читатели39K
Эта «небольшая» статейка является развитием темы затронутой в этой статье.
Как известно, PHP зародился довольно давно и уже тогда возник вопрос, что делать с возникающими ошибками. Perl, который является несомненным прародителем PHP по умолчанию не имел какой-либо системы обработки ошибок. При возникновении любой ошибки сервер выбрасывал 500-ю ошибку и на этом все заканчивалось. Поэтому Warnings, Fatal Errors и Notices были настоящим прорывом в облегчении и без того нелегкого труда программиста. Однако время шло, механизмы PHP не менялись, а технологии, как известно, на месте стоять не любят.
Читать дальше →