Архив рубрики: Программирование

PHP для новичков

Уже устал читать вопросы: «что читать новичку?», «с чего начинать изучение php«. Поэтому постараюсь дать ответы на основании накопленного опыта.

Ответ номер раз — если Вы задаёте подобные вопросы на формах, то Вам следует сменить профессию. PHP это не самая оплачиваемая, не самая лёгкая и просто не самая профессия. Без умения пользоваться гуглом и прочими интернет проектами с кучей информации в программировании делать нечего. Читать далее

Рабочее место программиста

В предыдущей статье вскользь упомянул об сервере убунте и подумал, что не мешало бы рассказать, как я вообще обустроился, чем пользуюсь для разработки.

Очень долго программировал дома на стареньком Duron с каплей оперативки и только недавно перешёл на новое железо — ноутбук тошиба. Очень удобно таскать всюду с собой, радуюсь, что взял всего 15.4 дюйма, но с windows 7 не хватает высоты. Если перетащить панель задач в право и сделать вертикальной, то не влазят все значки. Нужно выбраться и докупить монитор отдельно.

Ну а теперь, о наборе софта. Читать далее

Красивый var_dump с xdebug

Как всякий порядочный программист я пользуюсь отладчиком под PHP, коим является Xdebug. Но сейчас речь пойдёт не об отладке, а о «сахаре», который идёт в комплекте с xdebug. Очень удобным является красивое и более информативное оформление вывода ошибок и var_dump(). Но на моей ubunta server 10.04 вывод xdebug стал не нормальным, без оформления и раскраски. Я долго грешил на сам xdebug, комался в настройках, но всё оказалось проще: идём в /etc/php5/apache2/php.ini и ищем строку html_errors=Off, меняем её на html_errors=On, рестарт апача и благодать снова снизошла на нас.

Класс запроса — Request

В прошлый раз мы составляли список хотелок и среди них было ЧПУ. О человекопонятных урлах я так же начинал писать чуть ранее и приводил пример своего видения .htaccess правила для mod_rewrite, сейчас повтору его с некоторой поправкой связанной с моим просвящением в области SEO.

RewriteEngine on
RewriteRule !^(p/|favicon\.ico|robots\.txt|sitemap\.xml|sitemap\.xml\.tgz) index.php [L]

Теперь мы будем перенаправлять на index.php всё, кроме запросов в папку p(публичную), и на файлы favicon.ico, robots.txt, sitemap.xml. Теперь мы стали более дружественными к поисковикам и брат seoшник не будет нас проклинать.
Читать далее

Пишем свой велосипед: часть 0

Довольно часто приходится сталкиваться с велосипедостроительством в php. Язык к этому располагает, нет чёткого лидера среди фреймворков, да и те что есть довольно неудобные и громоздкие. И вот на просторы оупенсурса выливаются реки говнакода непонятно для чего написанные и куда должно оно течь.

Я поставил себе цель научить других, как планировать и выстраивать видение конечного продукта. Это поможет не только в велосипедостроении, но и в небольших проектах. Надеюсь, всё получится. Читать далее

Ищем сотрудника.

В наш дружный коллектив срочно требуется ещё один php программист хотя бы с минимальным опытом за спиной. В первую очередь ему придётся разобраться с внутренней CMS и заниматься доработкой сайтов созданных на ней. Работка довольно «весёлая», так как история ведётся с начала 2000-х и поднакопилось довольно много проектов и разных версий CMS. Разработки новых будет по минимуму, т.к. сейчас всё делаем в основном для себя. Очень желателен хороший скил в вёрстке и jQuery, ну и опыт php в реальных проекта,  если нужно, подтянем, но база обязательна.

А когда победим старое наследие, ждёт светлое будущее, приятный фреймворк и интересные проекты из области СЕО и для внутрикорпоративных нужд.

Компания известная, стабильная, коллектив прекрасный, коллеги лучшие из лучших ;).

Пример использования ArrayAccess

Мне недавно в блоге задали вопрос о применении ArrayAccess. Просто как замену массивам — глупо, тем более теряется производительность. Итак, для этого у нас две основные причины — set/get должны как-то влиять на значение переменных, вторая — объект может использовать данные помещённые в нём для других методов.

Рассмотрим примеры. У нас есть класс для работы с таблице из базы данных как с объектом. Читать далее

Моя реализация ЧПУ

Нашёл на одном из блогов реализацию ЧПУ и решил внести свою лепту. ЧПУ — человеко понятный урл. На аглийском наиболее популярное название User Friendly URL. С какого-то перепугу разработчики решили, что стандартный урл с гет переменными непонятен и покатилось. Сначала сравним варианты для вывода списка новостей категории test отсортированного по date:
news.php?category=test&sort=date — стандартный подход, вроде всё понятно ключ=значение
news/category/test/sort/date/ — если убрать выделение, то не понятно где ключ, а где значение
news/test/date/ кратко, но довольно путано, обязательный порадок, трудно изменять
news/category:test/sort:date/ — этот вариант хорош, так же нагляден как класика и даже чуть короче
news.test.date — краткий, но не информативный, есть один плюс — такие страницы без тайтла сохраняются с нормальным названием. Читать далее

Работа с формами

Когда новички спрашивают что бы им написать посерьёзнее, обычно советуют гостевую книгу. Вариант хороший, в нём много разных путей реализации, можно повесить авторизацию, работу с деревьями, но самое главное — формы. Самое удивительное, что я встречал огромное количество (количество пишется с одним «л», когда уже избавлюсь от этой ошибки) «профессионалов», которые так и не научились делать удобные формы. Совет заказчикам при оценке партфолио всегда проверяйте форму обратной связи или регистрации-авторизации. Читать далее

Смешиваем singleton и registry

Основное достоинство Одиночки одновременно является и его недостатком. Допустим у нас есть класс для работы с базой данных реализованный на singleton (о ужОс, нужно было хотя бы фабрику). Всё замечательно работает, пока в один непогожий день мы не придумываем держать данные в разных базах на разных серверах. Ну и этого геморроя нам мало, поэтому от возможностей мускула мы отказываемся. И приплыли… Соединение у нас то ОДНО. Отказываться от singleton и перелопачивать тонны кода тоже не с руки, значим поставим костыль. Читать далее