В этой короткой статье мы рассмотрим, что собой представляют неизменяемые объекты и почему нам следует их использовать. Неизменяемыми называются объекты, чьё состояние остаётся постоянным с момента их создания. Обычно такие объекты очень просты. Наверняка вы уже знакомы с типами enum или примитивами наподобие DateTimeImmutable
. Ниже мы увидим, что если делать простые объекты неизменяемыми, то это поможет избежать определённых ошибок и сэкономить немало времени.
Читать полностью »
Рубрика «php» - 109
Неизменяемые объекты в PHP
2016-05-19 в 11:16, admin, рубрики: php, web-разработка, Блог компании Mail.Ru Group, Разработка веб-сайтовDevConf 2016: Интервью с одним из разработчиков Yii
2016-05-19 в 10:33, admin, рубрики: devconf, devconf 2016, php, yii, yii 2, Блог компании DevConf, Разработка веб-сайтовПредставляем небольшое интервью с одним из докладчиков DevConf 2016 Александром Макаровым aka SamDark. Он является членом Yii core team c 2010 года и представителем Yii в PHP-FIG. Автор книги Yii Application Development Cookbook.
В первую очередь хотел бы спросить о работе. Ты работаешь в Stay.com. Подозреваю, что удаленно. Ты также активно участвуешь в конференциях, работаешь над Yii. Как удается совмещать? Это не фулл-тайм? Или что-то сродни когда-то гугловскому «20% на свои проекты»?
Да, я работаю в Stay.com. В основном, удалённо. Это fulltime. Yii занимаюсь либо в свободное время, либо когда не очень сильная загрузка по основному проекту.
На тему конференций у меня договорённость: они оплачиваются ровно так же, как и рабочие дни.
Читать полностью »
Язык шаблонов для универсального сигнатурного анализатора кода
2016-05-17 в 7:00, admin, рубрики: C#, dsl, java, pattern, pattern matching, php, PL/SQL, t-sql, Блог компании Positive Technologies, КомпиляторыПроцесс сигнатурного анализа кода в нашем проекте PT Application Inspector разбит на следующие этапы:
- парсинг в зависимое от языка представление (abstract syntax tree, AST);
- преобразование AST в независимый от языка унифицированный формат;
- непосредственное сопоставление с шаблонами, описанными на DSL.
О первых двух этапах было рассказано в предыдущих статьях "Теория и практика парсинга исходников с помощью ANTLR и Roslyn" и "Обработка древовидных структур и унифицированное AST". Данная статья посвящена третьему этапу, а именно: различным способам описания шаблонов, разработке специализированного языка (DSL) для их описания, а также примерам шаблонов на этом языке.
Содержание
- Способы описания шаблонов
- Собственный язык описания шаблонов
- Целесообразность
- Синтаксис
- Примеры шаблонов
- Жестко заданный пароль (все языки)
- Слабый генератор случайных чисел (C#, Java)
- Утечка отладочной информации (PHP)
- Небезопасное SSL соединение (Java)
- Пароль в комментарии (все языки)
- SQL-инъекция (C#, Java, PHP)
- Куки без атрибута безопасности (PHP)
- Пустой блок обработки исключения (все языки)
- Небезопасный куки (Java)
- Перехват незакрытого курсора (PL/SQL, T-SQL)
- Чрезмерно расширенные полномочия (PL/SQL, T-SQL)
- Заключение
Многопоточные вычисления в PHP: pthreads
2016-05-17 в 6:22, admin, рубрики: php, pthreads, параллельное программирование, ПрограммированиеНедавно я попробовал pthreads и был приятно удивлен — это расширение, которое добавляет в PHP возможность работать с несколькими самыми настоящими потоками. Никакой эмуляции, никакой магии, никаких фейков — все по-настоящему.
Я рассматриваю такую задачу. Есть пул заданий, которые надо побыстрее выполнить. В PHP есть и другие инструменты для решения этой задачи, тут они не упоминаются, статья именно про pthreads.
Стоит отметить, что автор расширения, Joe Watkins, в своих статьях предупреждает, что многопоточность — это всегда не просто и надо быть к этому готовым.
Кто не испугался, идем далее.
PHP-Дайджест № 85 – интересные новости, материалы и инструменты (24 апреля – 15 мая 2016)
2016-05-16 в 7:15, admin, рубрики: laravel, php, PHP-FIG, PSR, rfc, symfony, wordpress, yii 2, Zend Framework, Блог компании Zfort Group, Веб-разработка, дайджест, Новости, подборка, Разработка веб-сайтов, ссылки
Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.
Приятного чтения!
Читать полностью »
Пакет-географ или библиотека, которая прекрасно знает географию и говорит на разных языках
2016-05-15 в 8:14, admin, рубрики: geo, php, translations, Геоинформационные сервисы, Локализация продуктовВо многих из проектов, в которых я участвовал, была необходимость использовать географические данные в том или ином виде. Даже самые простые сайты, как правило, имеют список стран или городов на какой-нибудь из своих страниц – магазины хотят знать, куда доставлять товары; социальные сети хотят знать, откуда пользователь; и так далее.
Что далеко ходить – вот даже здесь на Хабре есть выпадающие списки стран, штатов и городов:
Читать полностью »
Обновление PHP до 7.0.6 может «сломать» ваш код
2016-05-11 в 7:39, admin, рубрики: bugs, laravel, php, php7, symfony, yii, Zend FrameworkВнимание! Будьте осторожны при обновлении PHP до версии 7.0.6! В этой версии был исправлено несколько важных багов, на которые мог неявно полагаться ваш код или код вашего фреймворка.
Доступ к базе данных Firebird из YII2
2016-05-10 в 10:43, admin, рубрики: firebird 2.5, Firebird/Interbase, php, xammp, yii, yii2 frameworkТак получилось, что мне понадобилось переносить интерфейс пользователя из связки Delphi + Firebird в WEB. Дабы не останавливать работу комплекса программ, решено было переносить формы постепенно, а для этого необходимо сохранить работу СУБД Firebird и подключаться к ней из web приложения. При разработке web-приложения я решил использовать фреймворк YII2. На этапе разработки мне не нужен полноценный HTTP сервер, вполне сойдет Denwer или XAMMP, или что-то еще. Я выбрал XAMMP т.к. в Денвере давно не обновляется версия PHP, а руками заниматься его обновлением не хочется, идем по пути наименьшего сопротивления. Изначально ни в XAMMP PHP, ни в YII2 нет возможности работать с СУБД Firebird, но при определенных танцах с бубном сделать это вполне реально. Итак, я буду полагать, что у Вас уже установлены: Windows 7 x64, XAMMP и YII2, Firebird 2.5.
Пути установки пакетов у меня (для себя вводите соответствующие корректировки):
- Firebird 2.5 версия x64 (тип сервера значения не имеет) в C:Program FilesFirebirdFirebird_2_5
- XAMMP установлен в D:xampp
- YII2 установлен в D:xampphtdocsyii
- БД расположена в пути D:WORKdatabaseTBOT.GDB
Теперь можно начинать.
Читать полностью »
Entity “фреймворк” для PHP из одного класса
2016-05-04 в 10:57, admin, рубрики: active record, ADODB, Entity, orm, php, sql, ооп, Разработка веб-сайтовПоскольку развитие технологий привело к тому, что у каждого программиста теперь есть собственный компьютер, в качестве побочного эффекта имеем тысячи разнообразных библиотек, фреймворков, сервисов, API и т.д. на все случаи жизни. Но когда этот случай жизни наступает, возникает проблема — что их этого использовать и что делать если оно не совсем подходит — переписывать, писать с нуля свое или прикручивать несколько решений для разных вариантов использования.
Думаю, многие замечали, что зачастую создание проекта сводится не столько к программированию сколько к написанию кода интеграции нескольких готовых решений. Иногда такие комбинации превращаются в новые решения, которые можно неоднократно использовать в последующих задачах.
Перейдем к конкретной «ходовой» задаче — объектная прослойка для работы с базами данных в PHP. Решений великое множество, начиная от PDO и заканчивая многоуровневыми (и, на мой взгляд, не совсем уместными в PHP) ORM движками.
Читать полностью »
Работа с WAV-файлами с использованием PHP
2016-05-04 в 8:56, admin, рубрики: composer, php, wav, waveform, ненормальное программированиеВсё началось с того, что я задумался о том, как отобразить на сайте информацию о загруженном аудио-файле. Для начала решил разобраться с самым простым форматом — wav. Как оказалось, ничего сложного в этом нет и писать именно об этом, в общем-то, не было бы никакого смысла, благо, информации о том, как устроен wav-файл «изнутри» в Интернете полно.
И тут Остапа понесло И тут в голову пришла светлая мысль о том, что было бы прикольно не просто отображать информацию о файле, но и иметь возможность генерировать такой файл «на лету». Думаю, все видели в сети всевозможные «онлайн-пианино» и прочее, верно?
Итак, что мне удалось сделать за 2 вечера — под катом.
Читать полностью »