Archive for the ‘PHP’ Category
7 Способов улучшить свой код
Written by Yaroslav Vorozhko on March 19, 2008 – 5:35 pm -Привет.
Как часто мы пишем код и потом замечаем, что его невозможно не только читать, а и сопровождать. Чем больше наращивается функциональности, тем меньше мы хотим продолжать работать с этим кодом. И в данной ситуации есть два решения: первое оставить все как есть и второе изменить код к лучшему, поработать над читабельностью, архитектурой, провести рефакторинг, написать тесты и т.д. В этой статье я хочу дать несколько хороших советов, как создавать приятный и легко сопровождаемый код.
Tags: OOP, phpunit, unit test, код, метод, рефакторинг, стиль, тесты, функция, читабельный код
Posted in Development, PHP | No Comments »
Позднее статическое связывание
Written by Yaroslav Vorozhko on March 13, 2008 – 4:48 pm -Недавно наткнулся на интересную Late Static Bindings Explained, описывающую новую возможность OOP в PHP6, так называемое Late Static Binding (LSB).
Позднее статическое связывание также стало доступно, начиная с версии PHP 5.3.
Зачем нужен LSB
Сейчас, статическая ссылка на текущий класс, такая как self или __CLASS__ распознается используя класс в которому текущая функция принадлежит, например:
<?php
class A {
public static function who() {
echo __CLASS__;
}
public static function test() {
self::who();
}
}
class B extends A {
public static function who() {
echo __CLASS__;
}
}
B::test(); // A
?>
LSB пытается решить эту проблему используя новое ключевое слово static::, которое будет ссылкой на тот класс, который был вызван в текущий момент времени.
<?php
class A {
public static function who() {
echo __CLASS__;
}
public static function test() {
static::who();
}
}
class B extends A {
public static function who() {
echo __CLASS__;
}
}
B::test(); // B
?>
Такая конструкция вызовет метод A::test, но static:: будет ссылаться на класс B, при не статическом связывании, будет выщван метод A::who, так как $this-> следует правилал наследования, а static:: нет.
Примеры
Наиболее распостраненный случай:
Tags: LSB, OOP, PHP5, PHP6, Static Bindings, static::, статическое связывание
Posted in PHP | No Comments »
Zend_DB Out of memory bug
Written by Yaroslav Vorozhko on February 10, 2008 – 5:41 pm -Привет,
Натолкнулся сегодня на один неприятный баг в Zend_DB при работе с “длинными типами данных”, которые часто используются для хранения неопределенных по размеру данных в MySQL. Как оказалось, Zend_DB некорректно работает с типом LONGTEXT И LONGBLOB и решение этой проблемы пока не найденно, но давайте посмотрим подробнее что все-таки можно сделать.
Tags: bug, eventum, fetch, fetchall, find, findby, findParentRow, longtext, mediumtext, out of memory, PHP, zend, zend db
Posted in MySQL, PHP, Tips And Tricks, ZendFramework | 2 Comments »
