Сообщение #1 Vitaly » 15.08.2016, 10:04
Решил протестировать как OkayCMS Lite 1.2.1 работает на PHP-7 (7.0.3 в моём случае.) Т.к. бытует мнение, что на версии 7x сайт может работать значительно быстрее.
Сразу появились ошибки типа - PHP Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP
В общем если по нашему, то ошибка получается в том, что конструктор класса называется как сам класс.
Но правок к счастью пришлось вносить не много, для нормальной работы (на первый взгляд):
В файле \api\Languages.php
Строку 126 public function languages($filter=array()) {
Меняем на public function language($filter=array()) {
Строку 281 $languages = $this->languages();
Меняем на $languages = $this->language();
Строку 311 $languages = $this->languages();
Меняем на $languages = $this->language();
В файле \api\Translations.php
Строку 17 $language = $this->languages->languages(array('id'=>$this->languages->lang_id()));
Меняем на $language = $this->languages->language(array('id'=>$this->languages->lang_id()));
В файле \view\View.php
Строку 40 $languages = $this->languages->languages();
Меняем на $languages = $this->languages->language();
В файле \backend\IndexAdmin.php
Строку 142 $languages = $this->languages->languages();
Меняем на $languages = $this->languages->language();
И ниже в этом файле
Строку 167 $first_lang = $this->languages->languages();
Меняем на $first_lang = $this->languages->language();
Ну собственно это пока всё, все функции магазина не проверял, но после этих правок ошибок не показывает, если появится, то меняем по аналогии.
Проверялось на уже установленной, чистой Lite версии 1.2.1. Как работает инсталлятор на php7 - не проверял.
Собственно предложение к разработчикам, может в следующих версиях по умолчанию сделать код валидным для php7? Или есть подводные камни?
Решил протестировать как OkayCMS Lite 1.2.1 работает на PHP-7 (7.0.3 в моём случае.) Т.к. бытует мнение, что на версии 7x сайт может работать значительно быстрее.
Сразу появились ошибки типа - [b]PHP Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP[/b]
В общем если по нашему, то ошибка получается в том, что конструктор класса называется как сам класс.
Но правок к счастью пришлось вносить не много, для нормальной работы (на первый взгляд):
В файле [b]\api\Languages.php[/b]
Строку 126 [b]public function languages($filter=array()) {[/b]
Меняем на [b]public function language($filter=array()) {[/b]
Строку 281 [b]$languages = $this->languages();[/b]
Меняем на [b]$languages = $this->language();[/b]
Строку 311 [b]$languages = $this->languages();[/b]
Меняем на [b]$languages = $this->language();[/b]
В файле [b]\api\Translations.php[/b]
Строку 17 [b]$language = $this->languages->languages(array('id'=>$this->languages->lang_id()));[/b]
Меняем на [b]$language = $this->languages->language(array('id'=>$this->languages->lang_id()));[/b]
В файле [b]\view\View.php[/b]
Строку 40 [b]$languages = $this->languages->languages();[/b]
Меняем на [b]$languages = $this->languages->language();[/b]
В файле [b]\backend\IndexAdmin.php[/b]
Строку 142 [b]$languages = $this->languages->languages();[/b]
Меняем на [b]$languages = $this->languages->language();[/b]
И ниже в этом файле
Строку 167 [b]$first_lang = $this->languages->languages();[/b]
Меняем на [b]$first_lang = $this->languages->language();[/b]
Ну собственно это пока всё, все функции магазина не проверял, но после этих правок ошибок не показывает, если появится, то меняем по аналогии.
Проверялось на уже установленной, чистой Lite версии 1.2.1. Как работает инсталлятор на php7 - не проверял.
Собственно предложение к разработчикам, может в следующих версиях по умолчанию сделать код валидным для php7? Или есть подводные камни?