Сложение строковых переменных содержащих цифры.

Что делает?

При сложении двух переменных типа String, содержащих в начале этих переменных цифры, эти цифры складываются.

Пример:


$a = "1500 стр.";

$b = "2500 стр.";

echo $a + $b; // 4000

Возможная проблема при использовании.

Данная особенность языка работает только, если цифры находятся сначала строки, если это не так ($a = “количество 1500 страниц”), то сложения цифровых частей строки не произойдет, отбрасывается только правая часть.

Применение.

Основная польза от применения это скорость в сравнении с применением регулярного выражения (“/[0-9]{1,}/i”).  Однако будьте внимательны и применяйте, когда точно уверены, что символов перед цифрами не будет

 
zend_framework

Небольшой lifehack zendhack, по получению списка названий месяцев\дней для отображения в view.

Как нам всем известно русский язык очень сильно отличается от других языков, а самое главное он кардинально отличается от английского. В Zend_Framework, как и во многих других фреймворках локализация и функции локализации сделаны с оглядкой на английский язык. Иногда это становится причиной проблем.

Проблема

Я столкнулся со следующей, мне необходимо было вывести список названий месяцев в году, все бы хорошо, но в русском языке названия месяцев могут быть не только в именительном падеже, но и в родительном, в отличие от английского (February, Февраль -> Февраля). А Zend_Framework в результате следующего кода:

$datearray = array('year' => $date->toString("yyyy"), 'month' => '2');
$other_date = new Zend_Date($datearray);
$other_date->get(Zend_Date::MONTH_NAME);

выводит только месяц в родительном падеже.

Решение

Покопавшись в классе Date метода для вывода месяца в именительном падеже я не нашел. Тогда я полез в xml файл с переводом (Zend/Locale/Data/ru.xml) и там увидел, что раздел с месяцами в именительном падеже присутствует. Посмотрев как обычные методы Zend_Date получают информацию из файла с переводом, я нашел способ как можно вывести имя месяца.

Zend_Locale_Data::getContent("ru_RU", 'month', array('gregorian', 'stand-alone', 'wide', $i));

где $i – номер месяца без лидирующего нуля (1..12)
Кстати таким образом можно выводить любые данные из файла с переводом, просто идя по DOM структуре XML файла.

 
zend_framework

В любом нормальном проекте не избежать форматирования даты, чтобы не тратить время на реализацию своих методов и функций я хочу рассказать как быстро отформатировать дату средствами MySQL и Zend_Date.

Форматирование с помощью Zend_Date.

Для быстрого форматирования даты при выводе ее пользователю я предлагаю создать помощник вида.
Для этого создаем простой viewHelper (application/view/helpers), я назвал его DateHelper:

<?php
/**
 *
 * @author Roman
 * @version
 */
require_once 'Zend/View/Interface.php';
/**
 * DateHelper helper
 *
 * @uses viewHelper Zend_View_Helper
 */
class Zend_View_Helper_DateHelper
{
    /**
     * @var Zend_View_Interface
     */
    public $view;
    /**
     *
     */
    public function dateHelper($date_value, $format)
    {
        $locale = Zend_Registry::get('Zend_Locale');
        $date = new Zend_Date($date_value, false, $locale);
        return $date->toString($format);
    }
    /**
     * Sets the view field
     * @param $view Zend_View_Interface
     */
    public function setView (Zend_View_Interface $view)
    {
        $this->view = $view;
    }
}

Теперь мы можем использовать его в view скрипте следующим образом:

$unformated_data = "2011-01-30 12:21:11";
$this->dateHelper($unformated_data, "dd MMMM"); ?>

Дата будет отформатирована в “30 January“. Для того чтобы дата выводилась с учетом локали (языка) нужно в файле Bootstrap.php добавить метод:

protected function _initLocale()
{
    $locale = new Zend_Locale('ru_RU');
    Zend_Registry::set('Zend_Locale', $locale);
}

В данном случае наш помощник вида выведет “30 января“. Модификаторы даты можно посмотреть тут.

Форматирование средствами СУБД MySQL.

Если вы получаете дату из базы, то не стоит забывать о встроенном форматировании даты в MySQL и других СУБД.

DATE_FORMAT('2011-01-30 12:21:11', '%d %M') AS FIELD_1

Функция DATE_FORMAT вернет нам “30 January“, подробнее модификаторы можно посмотреть тут

 
zend_framework

Не так давно, начал разбираться с Zend Framework, в этом очень помогают скринкасты от Jon Lobenlsold. Документация на офф сайте скудная и раскрывает только частные понятия отдельных классов, которые в принципе итак показываются с помощью той же IntelliSense Eclipse.
Подвигло меня написать этот пост следующее, я не мог понять как лучше коннектиться к базе, возможно мое решение поможет новичкам в ZF, таким же как и я. Я видел решение с созданием Helper‘а, но как выяснилось все намного проще. Как показала практика решение с Helper подходит только тогда, когда коннект к базе происходит из Контроллеров. Я же хочу делать запросы из собственного класса, который лежит у меня в папке /library/App/.
Итак для коннекта к базе необходимо сделать следующее -
Прописать следующие строчки в application.ini (я прописал в секцию production)

resources.db.adapter = "PDO_MYSQL"
resources.db.params.charset = "utf8"
resources.db.params.host = "127.0.0.1"
resources.db.params.username = "root"
resources.db.params.password = "123456"
resources.db.params.dbname = "yourdb"

После этого можно делать запросы из любого класс можно следующим образом.

$dbAdapter = Zend_Db_Table::getDefaultAdapter();
 $result = $dbAdapter->query("SELECT * FROM users")->fetchAll();
 var_dump($result);

В данном случае статический метод getDefaultAdapter возвращает Zend_Db_Adapter_Abstract, то есть тоже самое, что и при создании подключения через factory, а именно:

$config = Zend_Registry::get('config');
$dbAdapter  = Zend_Db::factory($this->config->db->type,
 array('host'     => $config->db->host,
 'username' => $config->db->user,
 'password' => $config->db->pass,
 'dbname'   => $config->db->name
 )
 );

В первом случае настройки автоматически подхватываются из application.ini, во втором же их приходится прописывать вручную.

Буду рад, если кому-нибудь данное открытие поможет как и мне.

 
Xo66uT26 Декабрь 2009Программирование на PHP

Понял что использовать Dreamveawer больше не могу, поэтому начал присматриваться к мощным PHP IDE. Припомнил, что читал на Хабре статью про сравнение IDE для языка PHP. В принципе статья состоит практически из одной сравнительной таблицы, автор расшарил ее на гуглодоках. Была мысль использовать Zend Studio, но цена сразу же отмела эту мысль. Вообще нужно сказать, что хотя в сравнительной таблице довольно много разных IDE, но я считаю, что достоины внимания только три из них:

  1. Zend Studio
  2. Netbeans
  3. Eclipse

Как я уже сказал, Zend Studio стоит немалых денег, поэтому для меня остались только Netbeans и Eclipse. Я как человек не по наслышке знакомых с Flex, решил выбор в пользу Eclipse (Flex редактор построен на основе Eclipse).

Нужно отметить, что Eclipse как таковой это фреймворк для разработки модульных кроссплатформенных приложений. Поэтому ознакомившись и научившись работать с Eclipse для PHP, затем перейти на этот же IDE, допустим под Java не составит труда.

Воодушевившись всеми вышеперечисленным доводами, я начал настройку PDT. Читать далее…