Pull to refresh

Comments 55

?? полезный оператор. Еще бы сделали какой-нибудь оператор типа <?== $something ?>, который бы автоматически оборачивал выводимую строку в htmlspecialchars().
Не забываем про Smarty. Не знаю как сейчас (пока что не сталкиваюсь ни с тем, ни с другим), но раньше он работал гораздо быстрее Twig, предлагая при этом сравнимые или даже большие возможности.

1) вы сравниваете скорость рендринга или скорость компиляции?
2) вы точно знаете на что способен твиг? С возможностью манипулировать AST возможности твига в плане расширения поистене огромны. Я как-то пробовал сделать jade на twig-е (просто как эксперемент). Подозреваю что сделать подобное на смарти будет как минимум неимоверно сложно.

Вы можете сходить по ссылке, что я привёл, и увидеть, что я там сравнивал как скорость компиляции, так и скорость выполнения уже скомпилированного шаблона.
Было бы интересно посмотреть скорость компиляции и выполнения спустя почти 5 лет.
Шаблонизаторы это конечно хорошо, но я имел в виду проекты, в которых по историческим причинам шаблонизатора нет и не предвидится.
Ну значит вам по историческим причинам и дальше придётся использовать htmlspecialchars(). Такой оператор вас не спасёт.
Можете написать простой парсер, который будет <?==?> преобразовывать в <?=htmlspecialchars()?>

PHP — не шаблонизатор, и не надо его использовать как шаблонизатор.


Если вы будете руками везде указывать экранирование для переменных — вы его в конце концов где-нибудь забудете, и получится нехорошо.
Экранирование должно быть включено по умолчанию. Как и сделано в шаблонизаторах.

UFO just landed and posted this here

Таки нет, PHP нельзя назвать нормальным шаблонизатором. Его можно в теории использовать как подобие шаблонизатора, но нет абсолютно никаких причин так делать.

UFO just landed and posted this here

Извините, но то, что на википедии в список шаблонизаторов включен PHP — не знает, что надо использовать его как шаблонизатор. Если вам нужен шаблонизатор, голый PHP для этой задачи брать нельзя.

UFO just landed and posted this here

Мало ли как он создавался. PHP/FI внезапно другой язык, на PHP7 похожий слабо.

с версии 4 уже точно нет. Первые две версии — да, шаблонизатор для Си.

я юзал php7.0 + laravel5.2 (новый проект) такого натерпелся… К примеру вместо перехвата исключения ларавелом тупо белый экран и т.д. Пришло откатится на 5.6
Хм… Старый проект на Yii 1(!) пару месяцев как перетащили на семерку. К примеру активно начали использовать статическую типизацию вместо аннотаций. Заметный прирост скорости при прогоне тестов получили.
Полёт нормальный, ЧЯДНТ?
А не могли бы выложить результаты тестов до и после, если конечно вас не затруднит ???
Что именно вы имеете в виду?
Результаты PHPUnit выглядят так, например:
$ phpunit.phar tests/
PHPUnit 4.8.8 by Sebastian Bergmann and contributors.
.........................................................................................
.........................................................................................
.........................................................................................
.........................................................................................
.........................................................................................
....................................................................................

Time: 4.06 minutes, Memory: 54.00Mb

OK (400 tests, 600 assertions)

и после
$ phpunit.phar tests/
PHPUnit 4.8.8 by Sebastian Bergmann and contributors.
.........................................................................................
.........................................................................................
.........................................................................................
.........................................................................................
.........................................................................................
....................................................................................

Time: 1.57 minutes, Memory: 54.00Mb

OK (400 tests, 600 assertions)


PS: паста не натуральная, для примера, цифры по памяти поставил.

PPS: а, вероятно вы имели ввиду тесты на перфоманс. Нет, такие мы, к сожалению, ещё не делали.
ЧЯДНТ?


Юзаете Yii, а не Laravel, очевидно ;)
Тут дело в прослойке между компьютером и стулом. Я гонял на PHP7 и Symfony 2.8, и Symfony 3.0, и Laravel 5.2 — полет отличный. ^^
Возможно стоило разобраться в причине, посмотреть логи, а не опускать руки увидев белый экран.
в логах пусто. Везде. Помогал migrate refresh
2 проекта на ларе и 7-й версии php. Может дело не в php?
дело в пхп. Тот же код нормально заработал на пред. версии.
UFO just landed and posted this here
Можете залить свои конфиги куда либо?
UFO just landed and posted this here
На самом деле было один раз такое, когда игрался с laravel, когда пытался использовать связку nginx+php-fpm+opcache и то же был белый экран и ошибок нету, и если мне память не изменяет проблема тогда была с opcache, но было давно и деталей не помню, но факт остается фактом — экран белый, логи пустые.
Огромное спасибо! Моя проблема решена! Я снёс opcache и всё заработало.
смотрите настройки пхп.
Белый экран — связан именно с неправильными настройками.

несколько проектов на пхп, всё ок :)
error_reporting E_ALL
display_error on
start_errors On

и так дальше.
Laravel 5.1 + Nginx 1.9.14 + PHP 7.0.6. Летает.
Из того, что заметил в 7 версии, неработают обработчики сигналов в консоли.
declare(ticks=1) limited to scope of file makes Signal handling difficult

Еще переименовали модуль mongo в mongodb из-за чего монгу пришлось пришлось убрать из зависимостей composer'а

Для разработки сойдет, а для продакшена будем ждать php7.1
UFO just landed and posted this here

Ой, я его пытался потыкать палочкой и случайно уронил.
Пойду, напишу автору.

О, заработало. Похоже, он раз в минут 10 перезапускается.

А вот автор мне ответил — говорит, раз в 30 минут перезапускается контейнер.

если своего сервера нет, то хостингеры пока предлагают предустановленную не выше 5.6 версии.
Решение упражнения 6 неверно. Оно сортирует по всем символам.
Упражнение 4. PHP4 конструкторы признаны устаревшими, используйте __construct

Что за дичь!?
И причем в руководстве по ПХП7, говорить о том, что не так в ПХП4?
Или я что-то не понимаю!? Объясните пожалуйста.


Конструктор должен носить такое же имя как и класс
т.е. если класс называется Foo, то и функция также должна называться Foo.


class Foo
{
    public function Foo()
    {

    }
}

echo "Next step !";

// Result
Next step !
Приветствую. Писать нужно
public function __construct() {}

если я правильно помню в php 7.1 ваш код уже не будет работать, в php 7.0 будет писать что то типа:
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; foo has a deprecated constructor in example.php on line 3


А вообще тут более детально описано: php.net/manual/ru/migration70.deprecated.php
При том, что я его на 7.1 и написал и отправил…
Конструктор должен носить такое же имя как и класс

добро пожаловать в 2017-ый год. Уже с версии 5.0 имя конструктора __construct. Для консистентности с деструкторами например и прочими методами жизненного цикла объекта (__clone, __sleep и т.д.) было принято решение задепрекейтить эти вещи.


Подробнее тут: https://wiki.php.net/rfc/remove_php4_constructors

в 5й версии да, не работает такая схема, но в 7ом все прекрасно работает.
image

Да, самое забавное в php7.1, что в таком варианте оно работает, но если мы пишем класс внутри namepace, то уже так работать не будет, но при этом и ругаться тоже не будет.
UFO just landed and posted this here
UFO just landed and posted this here
Sign up to leave a comment.

Articles