Мы будем Вам признательны, если Вы поддержите проект Open SLAED и используя Ваши возможности, разместите наш пресс-релиз на страницах своих сайтов, проектов, форумов, блогов. Текст пресс-релиза, возможно, видоизменить под Ваш формат, не искажая смысл. Пресс-релиз можно взять на данной странице.
WinMerge - Программа для визуального сравнения текстовых документов в Windows на предмет изменений в них. WinMerge умеет работать с DOS, UNIX и MAC форматами файлов, поддерживает Unicode и имеет подсветку синтаксиса. Может оказаться очень полезной, например, для определения того, что изменилось в одной версии проекта по сравнению с другой, а также для слияния изменений, выполненных в различных версиях. Интегрируется в оболочку Windows. Поддерживается расширение плагинами. Имеет русский интефрейс, открытый исходный код и распространяется по лицензии GNU/GPL.
Вы уже, наверное, в курсе, что группа разработчиков ядра PHP 6 встречалась в ноябре 2005 года в Париже. Это была захватывающая встреча, на которой разработчики обсудили развитие PHP со своей точки зрения. Прежде чем я начну свой рассказ о принятых решениях, вынужден предупредить – все что здесь перечислено, это не «100% решенные вопросы» и в окончательном релизе PHP 6 дела могут обстоять иначе. Конечно же, все эти моменты будут обсуждаться подробнее, но уже сейчас можно говорить о перспективах.
Окончательные релизы PHP 6 появятся не скоро, но профессиональные разработчики должны знать к чему готовиться...
Юникод
Поддержка юникода в настоящий момент может быть установлена только на уровне «per request», т.е. для каждого запрашиваемого файла. Это означает, что PHP придется сохранять варианты классов, имен методов и функций одновременно в таблице символов Unicode и в non-Unicode, что, конечно же, увеличивает количество потребляемых ресурсов. Разработчики решили сделать настройку юникода на уровне всего сервера, а не запроса. Отключение поддержки юникода, если таковая не требуется, может увеличить производительность строковых функций до 300% и приложений в целом до 25%. Вынос настроек в php.ini позволит снять заботу о юникоде с разработчика и переложить ее на администраторов хоста.
Если вы самостоятельно собираете PHP и несете всю ответственность за ваши серверы, то вам будет полезно знать, что для PHP 6 потребуются библиотеки ICU (в зависимости от того, будет ли нужен Unicode или нет).
Register Globals уйдут в прошлое
Попрощайтесь с этой настройкой, она будет окончательно убрана. Такой настройки больше не будет в php.ini и если вы ее внесете, то получите ошибку уровня E_CORE_ERROR. Это означает, что PHP 6 наконец-то завершит эру скриптов PHP 3. Это серьезный, но очень нужный шаг.
Magic Quotes будут исключены
Опция magic quotes будет так же исключена из PHP и при попытке включения такой настройки, «выскочит» ошибка E_CORE_ERROR. Это повлияет на magic_quotes, magic_quotes_sybase и magic_quotes_gpc.
Больше не будет Safe Mode
Это понравится тем, кто хостится на серверах с обязательным включением Safe Mode. Теперь, включение опции будет вызывать ошибку E_CORE_ERROR. Причиной для этого становится механизм посыла «сигнала опасности», который делает PHP более безопасным. Сохранится лишь open_basedir.
'var' будет полным алиасом 'public'
Var используется в классах PHP 4. В объектном подходе PHP 5, употребление var вызывает ошибку уровня E_STRICT. В PHP 6 предупреждение об ошибке будет устранено и var станет полным синонимом public. Это вполне нормальное решение, однако, те, кто «подогнал» свои скрипты под PHP 5, сделали в этом плане лишнюю работу.
Возврат по ссылке вызовет ошибку
И '$foo =& new StdClass()' и 'function &foo' теперь вызовут ошибку уровня E_STRICT.
Будет убрана совместимость с zend.ze1
Ze1 всегда пытался поддерживать старое поведение PHP 4, но не всегда «работал на 100%», поэтому в шестой версии PHP он будет полностью исключен.
Поддержка Freetype 1 и GD 1 будет убрана
Поддержка обоих (очень-очень старых) библиотек будет убрана.
dl() останется только в SAPI
Каждую функцию SAPI нужно будет регистрировать отдельно и только CLI и embed SAPI будут работать с этого момента. В других вариантах dl() работать не будет.
FastCGI всегда включена
FastCGI код будет «вылизан» и станет включенным по-умолчанию для CGI SAPI. При этом, поддержку FastCGI будет невозможно отключить.
Старые названия глобальных массивов будут удалены
Помните старые массивы HTTP_*_VARS? Если вы еще не начали использовать $_GET и $POST, то начните делать это прямо сейчас, потому что в PHP 6 эти массивы будут вызывать E_CORE_ERROR.
Перемещения расширений
Расширения XMLReader и XMLWriter войдут в дистрибутив и станут доступны по умолчанию. Расширение ereg для работы с регулярными выражениями переедет в PECL (т.е. будет удалено из PHP). Это означает, что PCRE будет по умолчанию недоступно и выключено. Такой шаг делается для включения нового расширения для работы с регулярными выражениями, основанными на ICU. Чрезвычайно полезное расширение Fileinfo будет включено в дистрибутив и доступно по умолчанию.
Дополнения к движку PHP
64 битный целочисленный тип данных
В движок будет добавлен новый тип данных -int64. Он будет использоваться поумолчанию для integer.
Goto
Никаких команд goto не будет добавлено. Однако, команда break расширится статической меткой, поэтому будет возможно написать break foo и это перекинет на метку foo: в вашем коде.
ifsetor()
Похоже, что мы не увидим эту функцию, что обидно. В операторе ?: можно будет опускать один параметр, что позволит писать так: "$foo = $_GET['foo'] ?: 42;" (т.е. если foo является истиной, то $foo будет равно 42). Это сэкономит немного кода, однако будет не так читаемо, как при использовании ifsetor().
foreach для многоуровневых массивов
Это отличное новшество – вы сможете проходить с помощью foreach по нескольким уровням массива, к примеру "foreach( $a as $k => list($a, $b))".
{} против []
Сейчас вы можете использовать и {} и [] для обращения к строковым индексам. Однако, запись {} уже сейчас вызовет E_STRICT в PHP 5.1 и будет полностью устранена в PHP 6. К тому же, [] частично заменят substr и array_slice и вы сможете использовать "[2,]" для получения символов от второго и до конца строки. Очень удобно.
Изменения в объектном стиле
Связка static
Будет добавлено новое ключевое слово для доступа к последующей связке – static::static2(), что позволит управлять static во время выполнения.
Пространства имен
Этот момент остается нерешенным и по сей день. Мой совет – не задерживайте дыхание.
Типизированные значения при возврате из функций
Разработчики высказались против типизации, потому как это «не в стиле PHP». Однако такая возможномть будет добавлена, но не решен вопрос ее синтаксиса. В любом случае, это будет полезная возможность.
Вызов динамческих функций как статических приведет к E_FATAL
Сейчас вы можете вызывать статические и динамические методы не обращая внимание на то, статические они или динамические. Вызов динамической функции как статической, вызовет E_FATAL.
Добавления в PHP
APC войдет в ядро
Работа APC с байткодом будет включена в основную поставку PHP в качестве стандарта, но, вероятно, не будет активизирована по-умолчанию, но результаты ее работы будут стимулировать хостеров включать эту опцию.
Hardened PHP патч
Этот патч выполняет большое количество дополнительных проверок на безопасность. Разработчики тщательно изучают этот патч и некоторые элементы найдут свое место в PHP: защита от разделения HTTP-запроса, allow_url_fopen будет разделена на две: allow_url_fopen и allow_url_include. Первая опция будет по-умолчанию включена, а вторая – отключена.
E_STRICT войдет в E_ALL
Вау, это серьезная штука! Сообщения об ошибках наконец-то войдут в E_ALL по умолчанию. Это демонстрирует старания разработчиков научить «лучшей практике программирования» посредством сообщений «Эй, ты делаешь неправильно!».
Прощайте asp-тэги <%
Будет удалена поддержка ASP-тэгов, но останутся короткие PHP-тэги <? ?>.
Заключение
PHP 6 движется в интересном направлении – разработчики PHP начали направлять программистов на правильный путь, вместо того чтобы упреждать «так делать не надо, потому что это устарело». Категоричное искоренение таких моментов как register globals, magic quotes, long arrays, {} string indexes и call-time-pass-by-references наконец-то заставит программистов «вычистить» свой код. Плохо ли это? Я так не думаю, но все это сделает переход на PHP 6 еще более медленным, чем мы наблюдаем с PHP 5 (который итак происходит ужасно!).
Официальная информация: http://www.php.net/~derick/meeting-notes.html
Оригинал статьи: http://www.corephp.co.uk/archives/19-Prepare-for-PHP-6.html
Автор: Richard Davey
Перевод: Андрей Олищук
Источник: http://phpclub.ru
Чтобы создать собственный модуль для сайта, построенного с использованием SLAED, достаточно простейших знаний HTML и PHP, а также соблюдение их синтаксиса. Кроме этого потребуется правильная постановка задачи и внимательность. В качестве примера ниже приведены коды модулей, созданные для использования на всех версиях системы SLAED. При реализации модулей учитывайте, любой PHP код должен начинаться c <?php и заканчиваться ?>
1. Создание простейшего модуля
1.1. Представим себе, что Ваш сайт только на русском языке. Вы хотите для этого сайта сделать модуль «О компании». Для этого Вам нужно в директории http://www.ваш_сайт.com/modules/ создать поддиректорию «About_Company». В этой поддиректории должен находиться файл index.php. Вот как это должно выглядеть:
(Кроме модуля «About_Company» на скриншоте представлен ещё и модуль «Account».)
В файле index.php для простейшего модуля должен быть такой код:
Без комментариев код модуля «О компании» выглядит так:
В содержимое модуля можно вставлять не только текст, но и HTML-код, а также PHP-код. HTML-код нужно вставлять с соблюдением синтаксиса языка PHP.
1.2. Допустим, Вы хотите кроме текста на русском языке вставлять в модуль ещё и какие-то картинки. Для этого нужно добавить в директорию «About_Company» модуля «About_Company» поддиректорию «images», в которой будут храниться графические файлы. Структура директорий и файлов модуля «About_Company» будет выглядеть так:
building.jpg — это фотография здания компании company_logo.gif — это логотип компании director.jpg — это фотография директора фирмы index.html — это пустой файл, который нужен для того, чтобы невозможно было просмотреть браузером содержимое директории «images» map.gif — это карта проезда к зданию компании
Разумеется, могут быть и другие графические файлы. Вы можете задавать свои имена графическим файлам.
1.3. Предположим, что Ваш сайт не на одном языке (только на русском), а на нескольких языках (русском, английском и немецком). В этом случае структура директорий и файлов модуля «About_Company» будет выглядеть так:
language — это директория, содержащая в себе языковые файлы
.htaccess — этот файл запрещает всем доступ в директорию «language», в этом файле должна быть такая строка:
Файл .htaccess нужно создавать, редактировать и сохранять только в программе «Блокнот» (Notepad) под Windows, так как этот файл должен быть сохранён в кодировке Unix, что обеспечивает его правильную работу на web-сервере, использующего операционную систему Unix или ей подобную (Linux, FreeBSD).
index.html — это пустой файл, который нужен для того, чтобы невозможно было просмотреть браузером содержимое директории «language» lang-english.php — языковый файл модуля на английском языке lang-german.php — языковый файл модуля на немецком языке lang-russian.php — языковый файл модуля на русском языке
Код модуля «About_Company» в этом случае будет иметь вид:
Без комментариев код модуля «About_Company», который работает на мультиязычном сайте, имеет вид:
В языковых файлах lang-english.php и lang-german.php информация, представленная в файле lang-russian.php, должны быть переведена на соответствующие языки.
В данном примере всё содержимое (контент) и внутреннее оформление (дизайн) модуля «About_Company» находится в языковых файлах. Для более сложного содержимого модуля (таблицы, например) целесообразно размещать HTML-код в файле index.php модуля «About_Company», а в языковые файлы нужно выносить только языковые константы (define("_ABOUT_COMPANY_TITLE","О компании");, например), что существенно облегчит работу с языковыми файлами, а также позволитс меньшими затратами времени вносить изменения в контент и дизайн модуля.
1.4. Для доступа к страничке со списком учредителей компании нужно применить оператор switch.
Код файла index.php модуля «About_Company» должен иметь вид:
Без комментариев код модуля «About_Company» будет выглядеть так:
В языковом файле http://www.ваш_сайт.com/modules/About_Company/language/lang-russian.php (а также в файлы lang-german.php и lang-russian.php) должна быть языковая константа _ABOUT_COMPANY_FOUNDERS. Файл lang-russian.php будет иметь вид, как было указано выше.
Указанный модуль не хранит информацию в базе данных, что позволяет чуть быстрее выводить эту информацию на страничку в браузер посетителя сайта, к тому же такой способ хранения информации меньше загружает MySQL-сервер хостера.
Для внесения новой информации, для редактирования существующей информации в файлах модуля (языковые файлы http://www.ваш_сайт.com/modules/About_Company/language/lang-russian.php) требуются начальные знания синтаксиса HTML и PHP.
Чтобы создать собственный блок для сайта, построенного с использованием SLAED, достаточно простейших знаний HTML и PHP, а также соблюдение их синтаксиса. Кроме этого потребуется правильная постановка задачи и внимательность. В данной статье мы рассмотрим варианты ручного создания файловых блоков. В качестве примера ниже приведены коды, созданные для использования на всех версиях системы SLAED.
Для начала необходимо создать файл в директории блоков blocks/ Для того, что бы система идентифицировала данный файл как файловый блок, название файла должно быть такого типа: block-ваше_название.php В самом файле, для вывода информации необходимо использовать переменную $content за место стандартных методов echo или print, это единственная отличительная особенность которую нужно учитывать. Всё остальное реализуется при помощи стандартных методов и функций PHP и HTML. При реализации блоков учитывайте, любой PHP код должен начинаться c <?php и заканчиваться ?>
Ниже мы рассмотрим варианты реализации блоков на примерах реализованных в коде, с комментариями участков.
Пример 1
Пример 2
В примерах ниже мы рассмотрим варианты вывода информации в блок из других файлов.
Для работоспособности примеров:
1. Создаём файл demo.txt в директории blocks/ Директория значения не имеет, файл может находиться на другом сайте. Важно указать точный путь к файлу!
2. В файле напишите произвольный текст на своё усмотрение. Содержание данного файла может быть любым.
В качестве содержание файла demo.txt предлагаю использовать изначальный текст:
Пример 3
Пример 4
После того как файловый блок создан и находится в директории blocks/ необходимо добавить и активировать его в панели администратора системы, в отделе блоков: Панель администратора >> Блоки и баннеры >> Добавить новый блок
Заголовок – Указываем название для блока
Ссылка на канал RSS – Оставляем пустым
Время обновления – Оставляем как есть
Имя файла – Выбираем созданный файловый блок
Содержание – Оставляем пустым
Позиция – Выбираем на своё усмотрение
Отображать блок в модулях - Выбираем на своё усмотрение
Язык - Выбираем на своё усмотрение
Активировать? – Да
Время работы, в днях – 0 без ограничений
После истечения – Если без ограничений, оставляем как есть
Кто это будет видеть? - Выбираем на своё усмотрение