30.Множественное наследование в PHP

Как многие из вас знают, PHP не поддерживает множественное наследование. То есть у производного класса может быть только один родительский. Но с помощью "магической" функции __call() его можно cэмулировать. Пример ниже - это расширенный паттерн примесь (mixin). Он также позволяет вызывать защищенные и скрытые методы из базовых классов.

читать дальше

20.Расширяем Models, Managers и QuerySets в Django

оригинал

В последнем своём проекте я исследовал Django. мне нравиться расширять Models методами, которые можно бы было вызывать из контроллера в Django, как я привык делать в своем фреймворке на php. В php это делалось просто - вы могли просто писать несколько новых функций в классе. В Django это чуть-чуть сложнее. Итак, что я изучил.
читать дальше

17.Как замыкания ломают циклы

оригинал

Я люблю замыкания. Это замечательный инструмент, любой Javascript программист должен уметь его использовать. Он позволяет делать фантастические вещи. Но есть в нем и свои сложности. Я опишу пару проблем, на которые наткнулся, чтобы у вас было меньше проблем при написании программ.
читать дальше

12.Счетчик строк в MySQL

Оригинал

Тестовая таблица

Таблица, использованная для примера в этой статье, называется "fruit" и определенна следующим образом:

  1. CREATE TABLE `fruit` (
  2. `fruit_id` int(11) NOT NULL AUTO_INCREMENT,
  3. `name` varchar(50) NOT NULL,
  4. `somevalue` int(11) NOT NULL DEFAULT 0,
  5. PRIMARY KEY (`fruit_id`)
  6. ) ENGINE=MyISAM

И данные:

  1. INSERT INTO `fruit` (`name`)
  2. VALUES ('Banana'), ('Orange'), ('Cherry'), ('Apple');

Запрос "SELECT * FROM fruit" вернет следующий результат:

fruit_idnamesomevalue
1Banana0
2Orange0
3Cherry0
4Apple0

SELECT со счетчиком

Чтобы использовать счетчик, надо объявить переменную:

SELECT @i:=0;

увеличивать ее можно следующим образом:

SELECT *, @i:=@i+1 AS i FROM fruit ORDER BY name;

Результат:

fruit_id name somevalue i
4 Apple 0 1
1 Banana 0 2
3 Cherry 0 3
2 Orange 0 4

Заметьте, что для каждой новой строки - @i больше чем для предыдущей.

UPDATE с счетчиком

Следующий пример обновит поле "somevalue" значением счетчика. Обратите внимание, что @i необходимо обнулить после предыдущего примера, иначе следующее его значение будет 5.

SELECT @i:=0;

Как и SELECT запрос выше, обновляем значания отсортированные по имени.

UPDATE fruit SET somevalue = @i:=@i+1 ORDER BY name;

И результат "SELECT * FROM fruit":

fruit_id name somevalue
1 Banana 2
2 Orange 4
3 Cherry 3
4 Apple 1

или "SELECT * FROM fruit ORDER BY name"

fruit_id name somevalue
4 Apple 1
1 Banana 2
3 Cherry 3
2 Orange 4

10.Чуть более 20 хороших советов по MySQL (часть 1)

оригинал


Работа с базой данных зачастую самое слабое место в производительности многих web приложений. И об этом должны заботиться не только администраторы баз данных. Программисты должны выбирать правильную структуру таблиц, писать оптимизированные запросы и хороший код. Далее перечислены методы оптимизации работы с MySQL для программистов.

читать дальше