Рубрика «php» - 264

Хранение иерархии в MySQL довольно затертая тема, воскурив хабр неоднократно я тем не менее не нашел для себя оптимальной структуры, сочетающей легкость поддержки и удобство пользования. Велосипед изобрелся сам...

Adjacency List (AL) удобен:

  • самоподдерживаемостью целостности данных (ON DELETE CASCADE)
  • легкостью вставкипереноса веток (обновление затрагивает одно поле parent_id у одного элемента)
  • Легкостью получения детей на 1 уровень вложенности

Но главные неудобства возникают при выборках:

image Здравствуйте, уважаемое читатели! Как-то раз был на хабре интересный материал про генерацию doc-файлов средствами PHP. К сожалению, больше на хабре ничего на эту тему я не нашел. На тот момент я разработал собственное решение.
Оно состояло в том, чтобы генерировать .docx файлы. Аргументы были следующие:

  • На дворе 2012 год, а этот формат появился аж в 2007-м
  • Генерить .docx несомненно проще, чем .doc, поскольку .docx = .zip, а .doc — бинарный файл
  • Костыль с генерацией HTML и переименованием в doc не подойдет для более-менее уважающих себяЧитать полностью »

Предисловие переводчика

Данная статья является вольным переводом-пересказом поста The End of Autoloading
. Оригинальная статья не первой свежести, поэтому код приведенный в примерах может быть не актуален. В теме, которую затрагивает статья, самое главное — общий взгляд, а не конкретные примеры.

Предисловие

Автозагрузка в PHP отлично экономит время. Это позволяет писать скрипты не задумываясь о путях к библиотекам, которые вы используете. Но с приходом неймспейсов и под влиянием Java-стиля современных фреймворков ситуация изменилась. В ближайшем будущем автозагрузка будетЧитать полностью »

Доброго времени суток, друзья!
Хочу поделиться опытом по борьбе с PHPUnit/DbUnit в связке с MySQL. Далее небольшая предыстория.

Краткая предыстория

В процессе написания одного веб-приложения возникла необходимость тестировать код на PHP, интенсивно взаимодействующий с БД MySQL. В проекте в качестве фреймворка модульного тестирования использовался порт xUnit — PHPUnit. В результате было принято решение писать тесты для модулей, непосредственно взаимодействующих с базой, подцепив плагин PHPUnit/DbUnit. Дальше я расскажу о тех трудностях, которые возникли при написании тестов и о том, каким способом я их преодолел. В ответЧитать полностью »

Разработчики сообщают о множестве изменений. Выделим основные:

  • Языковая поддержка типажей. Что это такое, можно ознакомиться здесь
  • PHP code coverage теперь встроен для Xdebug и Zend Debugger
  • В инспектор кода добавлены новые правила для PHP и JS
  • Поддержка новых плюшек из ECMA Script 6 (Harmony)
  • Улучшена поддержка ASS & LESS, CoffeeScript
  • Изменения в UI
  • И много другое...

Ссылки на скачивание:
Mac OS X
<a rel="nofollow"Читать полностью »

PHP / MVC Application: Mail В продолжение к прошлому топику: Файловый менеджер.
Небольшое приложение, также созданное без фреймворков с помощью MVC.

1) Интерфейс создавался для работы на планшетном компьютере.
2) Не gmail, потому что нужно хранить сообщения на своих серверах, необходимо работать с любыми доменами, в том числе своими.
3) Одно из преимуществ клиента, созданного на PHP, – его доступность с любого места, где есть интернет.
4) Не roundcube, так как данный почтовый клиент использует библиотеку PHPMailer, поэтому может работать с POP3, IMAP ящиками и отправлять почту по SMTP протоколу.
5) ПочтовыйЧитать полностью »

PHP / [Из песочницы] Файловый менеджер на PHP, с правами, контролем версий и AJAX-ом Особенности файлового менеджера:
— Можно задавать права доступа на файлы и директории. Права двух типов: есть доступ или нет доступа. Файлы хранятся в недоступной для скачивания по прямой ссылке папке. Скачивание файла происходит с предварительной проверкой пользователя и прав доступа на файл. Любой пользователь файлового менеджера может обладать правами администратора, что указывается при добавлении нового или редактировании существующего пользователя. Администратор может видеть все, в том числе «удалённые» файлы.
— Контроль версий каждого файла. После загрузки файла он сохраняется с именем, которое не позволяет перезаписатьЧитать полностью »

В одном из проектов мне понадобилось разобрать HTTP Range запрос, чтобы добавить поддержку загрузки файлов по частям. В сети полно различных примеров, но я так и не нашел ни одной полной реализации RFC 2616. Один код не учитывал, что диапазонов может быть несколько, другой, что стандарт допускает запросы больше размера документа, третий не различает синтаксически правильный и недостижимый запрос, как рекомендует стандарт. Поэтому я решил написать свою реализацию и поделиться со всеми. Подробности и пример реализации на PHP под катом.

Как гласит стандарт, запрос диапазона состоит из двух частей:Читать полностью »

При написании кода любой программист делает проверки. Это нормально :) Для генерации ошибок в PHP есть три механизма:error (собственно ошибки);

exception (исключения);

assertion (утверждения).

При написании кода и его последующем тестировании было обнаружено совершенно неочевидное поведение функции assert. А теперь немного кода:

 

<?php

// Предположим у нас есть перменная $x

$x = 'TEST';

 

// Теперь проверим как работает переменнаяЧитать полностью »

Здравствуйте.
На написание статьи меня сподвигнул этот пост. В нём приведено описание инструментов и некоторая теоретическая информация.
Сам я только начинаю разбираться в unit-тестировании и тестировании вообще, поэтому решил поделиться некоторой информацией касательно этого дела. А также систематизировать свои знания и навыки. Далее постараюсь объяснить процесс тестирования по шагам простым обывательским языком, так как нигде в интернете не нашёл разжёванного описания, по шагам так сказать. Кому интересно и кто хочет попробовать всё-таки разобраться, добро пожаловать.
Что такое автоматизированное тестированиеЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js