Undr

На память

Записи с меткой ‘php’

Использование ruby-like модулей в PHP

with 2 comments

1 Star2 Stars3 Stars4 Stars5 Stars (4 голосов, средний: 4.75 из 5)
Loading ... Loading ...

Недавно мне пришлось работать с очень длинными классами, примерно 1000-1300 строк. Они, знаете ли, не очень удобны для работы. Все время хотелось их разнести по разным модулям, как в ruby, чтобы не мешались в одной куче. А потом подключать эти модули в класс, возможно даже не в один. В итоге я сделал следующее:

Читать далее »

Написал undr ()

17 февраля 2010 в 17:07

Размещено в Примеры, Программирование

Метки: ,

Как я настроил встроенный дебагер для Zend Studio 5.0

without comments

1 Star2 Stars3 Stars4 Stars5 Stars (1 голосов, средний: 5.00 из 5)
Loading ... Loading ...

Решил обновить версию PHP для встроенного дебагера в Zend Studio 5. Версия была 5.0.1. Очень старенькая решил обновить до 5.2.11.

Что делал:

  • Скачал php версии 5.2.11 с официального сайта.
  • Скачал Studio Web Debugger
  • Сделал резервные копии всех файлов в папке C:\Program Files\Zend\ZendStudioClient-5.0.0\bin\php5 (Просто переименовал их, добавив к имени суффикс _old)
  • Скопировал в папку C:\Program Files\Zend\ZendStudioClient-5.0.0\bin\php5 файлы php5ts.dll и php-cgi.exe из скаченного архива PHP
  • Скопировал в папку C:\Program Files\Zend\ZendStudioClient-5.0.0\lib\php5 файл ZendDebugger.dll из архива с Studio Web Debugger. ({Studio Web Debugger папка}/5_2_x_comp)
  • Создал файл C:\Program Files\Zend\ZendStudioClient-5.0.0\bin\php5\php.ini. Добавил туда:
zend_extension_ts=C:\Program Files\Zend\ZendStudioClient-5.0.0\lib\php5\ZendDebugger.dll
zend_debugger.allow_hosts=127.0.0.1/32
session.save_path=C:\Program Files\Zend\ZendStudioClient-5.0.0\tmp
  • Запустил ZDE и проверил версию PHP в дебагере с помошью функции phpinfo(). Отлично, то что нужно.
  • Добавил в php.ini необходимые расширения:
extension_dir ="C:\Program Files\PHP\ext"
[PHP_CURL]
extension=php_curl.dll
[PHP_GD2]
extension=php_gd2.dll
[PHP_MBSTRING]
extension=php_mbstring.dll
[PHP_MYSQL]
extension=php_mysql.dll
[PHP_MYSQLI]
extension=php_mysqli.dll
[PHP_PGSQL]
extension=php_pgsql.dll
[PHP_PDO]
extension=php_pdo.dll
[PHP_PDO_MYSQL]
extension=php_pdo_mysql.dll
[PHP_PDO_PGSQL]
extension=php_pdo_pgsql.dll
[PHP_SHMOP]
extension=php_shmop.dll
[PHP_SOCKETS]
extension=php_sockets.dll
[PHP_ZIP]
extension=php_zip.dll

Ссылки:

Написал undr ()

3 декабря 2009 в 15:19

Размещено в Примеры

Метки: , ,

Переводим ошибки php в Exception

without comments

1 Star2 Stars3 Stars4 Stars5 Stars (3 голосов, средний: 2.33 из 5)
Loading ... Loading ...

Очень жаль что до сих пор в php не сделали нормальную поддержку Exception. Небольшой трюк описанный ниже позволяет на почти все ошибки php вызывать исключение, которое мы можем потом отловить и обработать, если необходимо.

Читать далее »

Написал undr ()

12 ноября 2009 в 14:02

Размещено в Примеры, Программирование

Метки:

Реализация google protocol buffers на php

without comments

1 Star2 Stars3 Stars4 Stars5 Stars (2 голосов, средний: 5.00 из 5)
Loading ... Loading ...

phpbuf – реализация google protocol buffers на php.

Эта библиотека не имеет пока генераторов кода. Классы сообщений нужно писать самому. Благо что пишутся они очень просто.

Читать далее »

Написал undr ()

15 октября 2009 в 19:55

Правильные окончания для единственного и множественного чисел

without comments

1 Star2 Stars3 Stars4 Stars5 Stars (Еще не оценили)
Loading ... Loading ...

Эта небольшая функция поможет отобразить правильные окончания у существительных в единственном и множественном числе

function pluralize($number, $one, $two, $three)
{
  if($number > 20) { $strval = strval($number); $number = $strval[strlen($strval) - 1]; }
  if ($number == 0) { return $two; }
  if ($number == 1) { return $one; }
  if ($number > 1 && $number <= 4) { return $two; }
  if ($number > 4 && $number < 21) { return $three; }
}

Используем:

// 1 медведь
<?= pluralize(1, "медведь", "медведя", "медведей"); ?>

// 2 медведя
<?= pluralize(2, "медведь", "медведя", "медведей"); ?>

// 6 медведей
<?= pluralize(6, "медведь", "медведя", "медведей"); ?>

//21 медведь
<?= pluralize(21, "медведь", "медведя", "медведей"); ?>

Написал undr ()

8 сентября 2009 в 19:57

Размещено в Примеры, Программирование

Метки: ,

Избавляемся от операторов if и foreach в шаблонах

without comments

1 Star2 Stars3 Stars4 Stars5 Stars (Еще не оценили)
Loading ... Loading ...

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

< ? if(isset($comments)): ?>
< ? foreach($comments as $comment): ?>
< ?= include_view("comment", array("comment" => $comment)) ?>
< ? endforeach ?>
< ? endif ?>
< ? if($reader->canWriteComments()): ?>
< ?= include_view("comment_form") ?>
< ? endif ?>

или

<div <? if($page->isActive()):?> class="active"< ? endif ?></div>

Можно написать помощника, который будет выводить текст по условию.

Читать далее »

Написал undr ()

8 сентября 2009 в 19:52

Помощники с блоком аля content_for для Rails в cakePHP

without comments

1 Star2 Stars3 Stars4 Stars5 Stars (Еще не оценили)
Loading ... Loading ...

По ходу разработки одного проекта на cakePHP возникла необходимость создания помошника, использующего блок, как в ruby. Использовали jQuery, и конструкцию $(document).ready(function(){}) добавляли в разных шаблонах и подшаблонах.

В результате эти блоки оказывались разбросанными по всему HTML документу. Это не очень удобно при отладке. Приходится перемещаться по всему документу в поисках нужного блока. Чтобы исправить ситуацию, создали помошник, который собирает все куски $(document).ready(function(){}) в разных подшаблонах и размещает их в одном месте, например, в секции head страницы.

Помошник действует по принципу рельсовой вспомогательной функции content_for, которой в блоке передается кусок шаблона для отображения в другом месте.

Были созданы три функции: jQueryReadyStart(), jQueryReadyEnd(), jQueryReadyShow(). Тело $(document).ready(function(){}) помещалось между двумя вызовами функций jQueryReadyStart() и jQueryReadyEnd().

Читать далее »

Написал undr ()

4 сентября 2009 в 18:51

Размещено в Примеры, Программирование

Метки: , ,

DoctrinePHP. Руководство пользователя. Глава 2 Управление соединениями.

without comments

1 Star2 Stars3 Stars4 Stars5 Stars (Еще не оценили)
Loading ... Loading ...

2.1 DSN, Описание Источника Данных

2.2 Открытие нового соединения

Открытие нового соединения с базы данных в Доктрине очень легко. Если Вы желаете использовать PDO (www.php.net/PDO), Вам нужно только инициализировать новый объект PDO:

Листинг. 36
<?php
    $dsn = 'mysql:dbname=testdb;host=127.0.0.1';
    $user = 'dbuser';
    $password = 'dbpass';
    try {
        $dbh = new PDO($dsn, $user, $password);
        $conn = Doctrine_Manager::connection($dbh);
    } catch (PDOException $e) {
        echo 'Connection failed: ' . $e->getMessage();
    }
?>

Заметьте, что непосредственная передача объекта PDO в Doctrine_Manager::connection() не позволяет Доктрине узнать имя пользователя и пароль к базе, так как нет никакой возможности получить их от PDO. Однако, имя пользователя и пароль требуется Доктрине для того чтобы иметь возможность создавать и удалять базы данных. Для этого Вы должны вручную установить имя пользователя и пароль непосредственно используя объект $conn.

Читать далее »

Написал undr ()

3 сентября 2009 в 18:24

DoctrinePHP. Руководство пользователя. Глава 1 Начало.

with 2 comments

1 Star2 Stars3 Stars4 Stars5 Stars (1 голосов, средний: 5.00 из 5)
Loading ... Loading ...

1.1 Требования

Для использования Доктрины требуется PHP> = 5.2. Она не требует никаких внешних библиотек. Для связи с базои? данных Доктрина использует PDO, которыи? установлен в php по умолчанию.

1.2 Установка

Есть в настоящее время четыре различных способа установки Доктрины.

  • SVN (subversion)
  • SVN externals
  • Pear
  • Zip архив

Рекомендуется загрузить Доктрину через SVN (subversion), потому что в этом случае ее легко обновлять. Если ваш проект уже находится под контролем SVN, Вы должны выбрать SVN externals.

Если вы хотите попробывать Доктрину, то используи?те sandbox.

Читать далее »

Написал undr ()

1 сентября 2009 в 00:53