Признаться, по правде, я думал, что в PHP 5.4 просто по латают дырки и добавят пару функций. Ну конечно же оптимизируют объектную часть, так как PHP превращается из шаблонизатора в настоящий язык программирования и без ООП ну никак. Но недавно узнал о новой языковой конструкции, которая меня просто поразила.
Это напомнило мне, чем то goto, но все же это не совсем оно. И я даже уже придумал кучу примеров где такая конструкция может быть весьма полезна.
На данный момент, даже в Fapos есть места, где было бы очень правильно использовать данную возможность.
Представляю вам trait.
Сразу пример из документации:
1 2 3 4 5 6 7 8 9 10 11 12
<?php trait ezcReflectionReturnInfo {
function getReturnType() { /*1*/ }
function getReturnDescription() { /*2*/ }
}
class ezcReflectionMethod extends ReflectionMethod {
use ezcReflectionReturnInfo;
/* ... */
}
class ezcReflectionFunction extends ReflectionFunction {
use ezcReflectionReturnInfo;?>
С тех самых пор, как я начал свой путь в программирование, мне все и вся твердили о том, что в PHP совершенно не стоит думать о потреблении оперативной памяти сервера. Мол PHP сам с этим справляется на Ура. Но так ли оно на практике? Я решил провести серию небольших эксперементов, в основном, для тестирования Fapos CMS, но результаты оказались интересными. По крайней мере, мне так кажется. И я решил опубликовать их, хотя бы как напоминание самому себе. Ну и, за одно, может будет кому то полезно.
Для дальнейшего тестирования нам понадобятся отладочные функции, которые собственно и будут показывать разницу в памяти, между запуском приложения и нужной нам точки в коде.
1 2 3 4 5 6
<?php function memoryUsage($base_memory_usage) {
printf("Bytes diff: %s<br />\n", getSimpleFileSize(memory_get_usage() - $base_memory_usage));
}
function someBigValue() {
return str_repeat('SOME BIG STRING', 1024);
}?>
Часто бывает так, что нам необходимо иметь что-то типа супер глобальной переменной, которую мы могли бы использовать в любом месте нашего приложения. Не правда ли, удобно? Кто-то использует для этих целей супер глобальные массивы PHP, но это совсем не профессионально и лучше, если об этом никто не узнает.
Сейчас я хочу рассказать об одном из предопределенных интерфейсов PHP - ArrayAccess, который позволяет работать с объектами как с массивами, что очень удобно, а в связке с паттерном Singletone, мы получаем нечто вроде суперглобального массива для хранения чего угодно в нашем приложении.
Что такое интерфейс? Это нечто вроде указания, какие методы должны обязательно присутствовать в классе, который связан с интерфейсом. На пример интерфейс ArrayAccess обязывает нас иметь в своем классе четыре метода
1 2 3 4
<?php /* Methods */
abstract public boolean offsetExists ( mixed $offset )
abstract public mixed offsetGet ( mixed $offset )
abstract public void offsetSet ( mixed $offset , mixed $?>
В терминах спецификации css 1pt = 1/72in, а 1pc = 12pt.
В свойстве font-size задание отрицательного значения в единицах длины, например -25cm, недопустимо.
Почему абсолютные? Потому что за ними в физическом мире стоит реальная величина, тоесть эталоны.
С такими единицами работает устройство вывода, которое имеет реальный физический размер, например: при печати будем использовать такие единицы.
А вот для мониторов эти единицы не имеют никакого значения, есть некая условность, но это действительно только лишь условность.
К относительным единицам относятся:
* em (кегельная)
* x-height (ex)
* px (пикселы)
Проценты ( % ) — всегда величина, о которой стоит говорить отдельно. Она настолько важная, что W3C вынес ее в отдельную колонку. Тоесть % можно писать не у всех правил, а только
Никак не можете добиться нормальной популярности своего сайта среди пользователей? На Вашем сайте маленькая посещаемость, и Вы никак не можете увеличить её? В данной статье описано несколько способов для увеличения популярности сайта, и соответственно его посещаемости.
Думаю все часто сталкиваются с ошибками на сайтах. Как правило, это ошибка 404 или 500. Так вот я хотел бы показать простой способ, как сделать эти сообщения более красивыми и дружественными.
Делать будем это при помощи .htaccess - конфигурационного файла Apach.
Самый простой пример это просто создание определенного текстового сообщения.
Code:
#Error pages
ErrorDocument 500 "server is temporarily not available. <br /> Сервер временно не доступен."
ErrorDocument 408 "server is temporarily not available. <br /> Возможно сервер перегружен, попробуйте еще раз или зайдите поже."
Таким образом мы можем сами решать какой текст показать пользователю, при возникновении ошибок. Как вы могли заметить, для каждой ошибки можно определить свой текст.
Но просто изменить текст не всегда означает "красиво". И по этому я расскажу, как выдавать стилизованные сообщения об ошибках. Делается это так:
2xx: Success (Успешно) 200 OK - Хорошо 201 Created - Создано 202 Accepted - Принято 203 Non-Authoritative Information - Информация не авторитетна 204 No Content - Нет содержимого 205 Reset Content - Сбросить содержимое 206 Partial Content - Частичное содержимое 207 Multi-Status - Многостатусный 226 IM Used - IM использовано
3xx: Redirection (Перенаправление) 300 Multiple Choices - Множество выборов 301 Moved Permanen
В наше время сделать сайт может каждый, у кого достаточно желания. Для этого есть целое море инструментов, как платных, так и бесплатных CMS, фреймворков и так далее. Я встречал даже студии, которые делали сайты за даром или за бесценок, в обмен на какую то мелочную услугу.
И в это время актуальным становится вопрос не о создании сайта, а о его продвижении. Пиар, SEO, раскрутка, продвижение, реклама, оптимизация - как не назови, а это сейчас самое главное. Это важнее юзабилити сайта или его дизайна. Это важнее всего. Я лично встречал откровенные говносайты, но с достойным пиаром, они в топе поисковых систем.
Хорошая раскрутка сейчас стоит уйму денег и бесплатно, в отличии от самих сайтов, ее никто не делает. Если вы твердо решили продвинуть свой ресурс в сети, то перед вами стоит выбор: платить и надеяться на то, что люди, которым вы платите, знают свое дело или попытаться раскрутить сайт самому. Как я и говорил раньше, раскрутка сайтов дело дорогостоящее и долгое.
Эта короткая заметка о том как установить себе локальный сервер "Денвер" и поставить на него пакет расширения с дополнительными модулями, например cURL. Часто возникает ситуация, когда пакет расширений ни в какую не ставится и приходится танцевать с бубном. Постараюсь рассказать как бесплатно скачать денвер и установить на него пакет расширения.
Для начала качаем сам Денвер с официального сайта денвера - скачать.
Устанавливаем его. Там все элементарно. Жмем всегда ентер и в конце, когда перед нами стает выбор "1" или "2" выбираем "1".(мое мнение, что так лучше)
И тут, ВНИМАНИЕ! Пакет не становится и ругается на DLL-ку. Но это случается тогда, когда денвер запущен. Останавливаем денвер и производим установку. Все еще проще, чем при инсталяции самого денвера.
Далее идем по адресу usr/local/php5/php.ini там где установлен денвер. Открываем
Sortable - это плагин к JQuery позволяющий сортировать элементы в режиме реального времени, просто перетягивая их мышкой. Данный плагин имеет богатый функционал и я решил сделать подробный ман по его настройке и использованию, так как сам недавно столкнулся с ним и осознал всю его полезность.
Для начала посетим страницу настраиваемой закачки на сайте jQuery UI, чтобы получить необходимые нам файлы. Щелкаем на ссылке Deselect all component, чтобы не закачивать лишнее, а затем выбираем только то, что нам потребуется – отмечаем чекбокс Sortable и видим, что вместе с ним отметились чекбоксы UI Core и Draggable. Работа плагина Sortable зависит от них, поэтому они необходимы.
Кроме этого, справа есть выпадающий список, где можно выбрать понравившуюся тему оформления. Если все готово, кликаем кнопку Download и получаем архив.
Сначала в разделе HEAD подключаем несколько файлов, которые есть в архиве:
[js]
<link type="text/css" href="css/sunny/jq
AtomX 2.8 Beta - Новая версия бесплатной CMS
AtomX 2.8 Beta - Новая версия бесплатной CMS
Программирование - что может быть проще.
Программирование - что может быть проще.
AtomX 2.8 Beta - Новая версия бесплатной CMS
AtomX 2.8 Beta - Новая версия бесплатной CMS
Написание простого вируса в блокноте
Что такое API и для чего они нужны
Классы в PHP для чайников
Написание простого вируса в блокноте