<rmcreative>

RSS

Все заметки с тегом «PHP»

Можно уточнить:

  1. Итерация по массиву, значения по ссылке

    23 сентября 2008

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

    $arr = array('A', 'B', 'C');
    foreach ($arr as &$val) {
      $val = trim($val);
    }

    //что есть array_walk я знаю

    Всё это очень хорошо, но один раз мне пришлось из-за такой возможности очень несладко. Простейший, код, чтобы показать эффект:

    $arr = array('A', 'B', 'C');
    foreach ($arr as &$val) {}
    foreach ($arr as $val) {}
    var_dump($arr);
    array
      0 => string 'A' (length=1)
      1 => string 'B' (length=1)
      2 => &string 'B' (length=1)
    
    

    Тогда я вместо var_dump использовал print_r и не увидел &… На самом деле объяснение логичное: после первого цикла $val — ссылка на последний элемент массива. При второй итерации по этой ссылке начнут записываться значения, изменяя массив. Решается проблема так:

    $arr = array('A', 'B', 'C');
    foreach ($arr as &$val) {}
    unset($val);
    foreach ($arr as $val) {}
    var_dump($arr);
    6 комментариев
  2. Операции над массивами

    23 сентября 2008

    Многие забывают, что в PHP можно складывать массивы:

    $a = array (1, 2, 3);
    $b = array ('a' => 1, 2, 3);
    var_dump ($a + $b);
    array
      0 => int 1
      1 => int 2
      2 => int 3
      'a' => int 1
    
    

    Это не array_merge. Ключи при таком слитии массива сохраняются.

    Также можно сравнивать массивы. При этом == проверяет все пары ключ-значение и их количество, а === ещё и порядок.

    3 комментария
  3. Zend Studio for Eclipse 6.1

    23 сентября 2008

    Из нового

    — Улучшены редакторы JavaScript (дополнение, поддержка Dojo) и CSS (дополнение).

    — Улучшенная интеграция с Zend Framework 1.6.

    — Новый редактор запросов SQL.

    — Исправлено зависание «Building workspace». (Ура!)

    Всем использующим советую обновляться. Остальным — попробовать.

    Комментировать
  4. Автодополнение свойств классов в PHP IDE

    16 сентября 2008

    В ночных билдах Eclipse PDT 2.0 появилась долгожданная для многих возможность. Теперь можно воспользоваться синтаксисом phpDoc 1.4+:

    /**
     * @property MyClass $regular MyClass property
     */
    class TestClass { 
        private $_thingy;
     
        function __get($var){
            switch ($var) {
                case 'regular' :
                    return $this->_thingy;
            }
        }
     
        function __set($var, $val){
            switch ($var) {
                case 'regular' :
                    if (is_string($val)) {
                        $this->_thingy = $val;
                }
            }
        }
    }

    И получить дополнение методов класса MyClass для такого кода:

    $my_obj = new TestClass();
    $my_obj->regular

    Попробовать можно уже сейчас

    8 комментариев
  5. Zend Framework 1.6

    8 сентября 2008

    Вышел новый релиз Zend Framework — одного из лучших PHP фреймворков.

    Об основных изменениях я уже писал.

    Официальный анонс

    Обновляемся и пробуем

    Комментировать
  6. Drupal for Firebug

    7 сентября 2008

    http://drupal.org/files/images/drupalforfirebug_full.png

    Модуль интегрируется с популярным Devel и отдаёт отладочную информацию в отдельную вкладку FireBug.

    Первый релиз для 5.x и 6.x уже можно опробовать. Авторы обещают развивать проект и далее.

    7 комментариев
  7. CodeIgniter 1.7. Скоро.

    27 августа 2008

    Последние дни в SVN CodeIgniter ну очень уж много значительных коммитов, так что скорее всего готовится скорый выход первой версии линейки 1.7.

    Почему 1.7, а не 1.6.4? Это не багфикс релиз. Да, ошибки тоже исправляют, но имеются большие изменения:

    Читаем

    4 комментария
  8. Drupal: Передача параметров в JavaScript

    20 августа 2008

    В Drupal довольно удобно реализована передача параметров в JavaScript:

    drupal_add_js(array(
      'my_namespace' => array(
        'my_variable' => 'my_value'
      )
    ), 'setting');

    Получить значение из JS можно так:

    alert(Drupal.settings.my_namespace.my_variable);

    Пока заметил только два интересных момента:

    1. Нельзя использовать минусы при именовании ключей массива.

    2. Не выйдет использовать готовые решения для собирания скриптов в один файл т.к. нарушается порядок загрузки.

    3 комментария
  9. PHP класс для работы с Яндекс.XML

    18 августа 2008

    Антон Шевчук поделился PHP-обёрткой для реализации поиска средствами Yandex.XML.

    Пробуем

    Комментировать
  10. Kohana 2.2

    12 августа 2008

    Обновился выросший из CodeIgniter PHP5-фреймворк Kohana.

    Что именно изменилось неясно, но что-то точно :) Самый большой минус фреймворка — отсутствие актуальной документации.

    Если нравится разбираться по APIможно попробовать как альтернативу CodeIgniter.

    3 комментария