Как стать автором
Обновить

Комментарии 55

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

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

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

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


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

НЛО прилетело и опубликовало эту надпись здесь

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

НЛО прилетело и опубликовало эту надпись здесь

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

НЛО прилетело и опубликовало эту надпись здесь

Мало ли как он создавался. 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?
дело в пхп. Тот же код нормально заработал на пред. версии.
НЛО прилетело и опубликовало эту надпись здесь
Можете залить свои конфиги куда либо?
НЛО прилетело и опубликовало эту надпись здесь
На самом деле было один раз такое, когда игрался с 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
НЛО прилетело и опубликовало эту надпись здесь

Уже давно не рекомендуется делать использовать declare tick для обработки сигналов. Используйте: http://php.net/pcntl_signal_dispatch

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

О, заработало. Похоже, он раз в минут 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, то уже так работать не будет, но при этом и ругаться тоже не будет.
НЛО прилетело и опубликовало эту надпись здесь
Все прекрасно!
image
НЛО прилетело и опубликовало эту надпись здесь
убедил :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории