Запись с метками ‘php

fd81b742d27197e13eca20e68507cd2a914329c8_hq

Даже не знаю, можно ли это назвать багом, или, скорее, ошибкой проектирования, но эта “багофича” может стоить вам нескольких часов жизни, наполненных недоуменными возгласами и крепкими матюгами.

Итак, в чем суть:

В миграциях в Laravel все изменения в схеме таблицы оборачиваются в замыкание, которое передается в метод фасада Schema (table или create, неважно). Выглядит это примерно так:

Schema::table('mytable', function(Blueprint $table)
{
    $table->integer('test');
    $table->boolean('test2')->default(false);
});

Суть в том, что на момент вызова методов Schema Builder (integer(), boolean(), index()…), никаких действий над схемой ещё не происходит – соответствующие задачи просто записываются в очередь, а потом, уже после завершения выполнения замыкания, последовательно выполняются.
Но на самом планируемые изменения схемы пишутся не в одну, а в две очереди: отдельная очередь на действия с колонками (добавление, редактирование, удаление) и отдельно на всё остальное (индексы, внешние ключи, и т.д). Вот это то и есть багофича, потому что одна последовательность действий разделяется на две и выполняется сначала одна, а потом вторая (сначала выполняются все действия над колонками, а потом действия над индексами и прочее). Читать полностью »

Я тут озаботился документированием собственного кода (дада, говнокодер во мне умирает) и по этому поводу сижу, изучаю инструментарий. Собственно, с инструментарием бедновато – есть только phpDocumentor и Doxygen. И вот я таки не знаю, что же выбрать. Читать полностью »