Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Как стать программистом и избежать детских ошибок: Изящные пути к файлам


Здравствуй, уважаемый терпеливый читатель. Я обленился и не выпускал рассылку уже полгода, несмотря на то, что материалы у меня были.

Попробую в очередной раз исправиться, для начала выслав то, что уже было в моём блоге.

Уточнение к двум последним выпускам

Вдумчивый читатель мог обратить внимание на то, что:

  • в статье «Как я пишу очередную фичу» предлагается сначала мечтать, потом делать;
  • а в статье «Рефакторинг на ходу» мы сначала сделали что-то грязное, а потом пришли к результату, который должны были вымечтать с самого начала.

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

Изящные пути к файлам

В сегодняшнем выпуске я хочу облегчить вашу участь, о многоуважаемый читатель-програмист!

Пишу, чтобы закрыть в рассылке тему путей к файлам. А вспомнил о ней, потому что снова натолкнулся на сложное решение простой (или даже отсутствующей) задачи:

$NETCAT_FOLDER join(
        strstr(__FILE__"/") ? "/" "\\",
        array_slicepreg_split("/[\/\\\]+/"__FILE__), 0, -)
    ).
    ( strstr(__FILE__"/") ? "/" "\\" );

Я даже не хочу говорить, что

strstr(__FILE__"/") ? "/" "\\"

на самом деле записывается константой DIRECTORY_SEPARATOR.

И даже не стоит оказывать особый почёт разработчикам CakePHP, сократившим запись:

if (!defined('DS')) {
    define('DS'DIRECTORY_SEPARATOR);
}
require CORE_PATH 'cake' DS 'bootstrap.php';

Но стоит понять то, что знают разработчики большинства CMS:

Прямой слэш сегодня работает везде!

А первый пример, в свою очередь, эквивалентен такой записи:

$NETCAT_FOLDER dirname(__FILE__).'/../../';

Ещё сомневаетесь? Пробуйте в Windows:

chdir("c:/windows/system32/../");
echo getcwd();

Более того, работает даже в командной строке, хотя тут с оговорками:

cd "\windows/system32/../"

Этот выпуск Вы можете прокомментировать в Живом Журнале.

Задать вопрос

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


В избранное