Интересная теоретически-практическая задачка на собеседование и не менее интересные варианты решения… особенно в комментариях.
Все заметки с тегом «php»
-
Нехитрый вопрос на собеседовании или как не попадают в стартапы
12 июня 2008
-
The PHP Benchmark
5 июня 2008
Отличный тест, показывающий, что написанный «немного» по-разному код в PHP иногда сильно отличается в плане производительности.
-
Избавляемся от рутинных операций с помощью Phing
5 июня 2008
Заметка о PHP-аналоге Apache Ant, который может значительно сэкономить вам время, выполняя рутинные задачи.
-
PHP, многомерные массивы
3 июня 2008
Всё описанное ниже успешно опровергнуто в комментариях.
Всё, как и ожидается. В $new_arr будет копия $arr:
$arr = array( 'one' => 'val_one', 'two' => 'val_two' ); $new_arr = $arr;
А вот тут не всё так просто… вместо массива $subarr в $new_arr будет ссылка на него.
$subarr = array( 'one_one' => 'val_one_one' ); $arr = array( 'one' => $subarr ); $new_arr = $arr;
-
FirePHP
2 июня 2008
FirePHP — расширение FireBug для вывода отладочной информации PHP в консоль FireBug.
На сайте имеются библиотеки для подключения к Zend Framework и Symfony. Также нашлась версия для CodeIgniter.
-
Drupal 5 Thickbox update
26 мая 2008
Обновление JS и CSS кода модуля Drupal 5 Thickbox до последней доступной на данный момент версии.
Исправляет баги IE6 с позиционированием бокса на длинных страницах.
Требует jQuery Update.
В основную ветку Drupal 5 включено не будет из-за требуемого jQuery Update.
-
Русские языковые файлы для CodeIgniter 1.6.2
15 мая 2008
Основан на русском переводе для CodeIgniter 1.51, выполненном Шульга Алексеем. Том самом, который можно найти в русскоязычной группе Google.
Допереведны новые строки, сделаны некоторые правки в старых.
-
CodeIgniter v1.6.2. Релиз.
13 мая 2008
Не успел я сообщить о предстоящем релизе, как он уже состоялся :)
-
Прикручиваем xdebug к Denwer
13 мая 2008
Когда-то меня спрашивали, как прикрутить Xdebug к Денверу. Вот пошаговая инструкция:
Сливаем dll Xdebug тут: http://xdebug.org/download.php.
Копируем слитый файлик (в моём случае это php_xdebug-2.0.3-5.2.5.dll) в путь_к_denwer/usr/local/php5/ext/.
Прописываем в путь_к_denwer/usr/local/php5/php.ini:
[xdebug] zend_extension_ts=/usr/local/php5/ext/php_xdebug-2.0.3-5.2.5.dll
- Проверяем, что всё работает при помощи phpinfo(): должна появится секция xdebug и не должно быть предупреждений вроде
XDEBUG NOT LOADED AS ZEND EXTENSION
.
UPD: для PHP 5.3 необходимо заменить
zend_extension_ts
наzend_extension
.UPD2: на официальном сайте есть волшебная страничка, которая всегда подскажет, что с вашим xdebug не так.
-
enum в PHP
12 мая 2008
Часто приходится иметь дело с определённым набором значений-параметров, которые можно передать какому-либо методу. Многие просто используют для этого строковые значения:
class Rights { function check($role, User $user){ return $user->role == $role; } }
Rights::check('adminisrator', $me);
Как видно из примера выше, ошибиться довольно легко, а вот ошибку найти будет довольно сложно.
Одно из возможных решений — завести псевдо-enum класс Roles:
class Roles { const ADMINISTATOR = 'administrator'; const USER = 'user'; } class Rights { function check($role, User $user){ return $user->role == $role; } }
Теперь вызов метода будет выглядеть так:
Rights::check(Roles::ADMINISTATOR, $me);
В случае описки компилятор нас предупредит.