RSS Feed
Июл 19

Doctrine Accessors и Mutators

Posted on Воскресенье, июля 19, 2009 in Doctrine, php

Очень часто пароль мы хешируем, для этого есть замечательный метод hasMutator.

Пример модели:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class User extends Doctrine_Record
{
    public function setTableDefinition()
    {
        $this->hasColumn('username', 'string' 255);
        $this->hasColumn('password', 'string', 255);
    }
 
    public function setUp()
    {
       $this->hasMutator('password', 'md5Password');
    }
 
    public function md5Password($value)
    {
        $this->_set('password', md5($value));
    }
}

и теперь когда мы работаем с созданием модели, апдейтом и т.д. можно просто писать так

1
2
3
4
        $user=new Users();
        $user->username="aa";
        $user->password="haha";
        $user->save();

в базе будет положена колонка с паролем в md5

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Уникальных посетителей темы: 46

Июн 29

Удаление дубликатов в MySQL

Posted on Понедельник, июня 29, 2009 in php

Все банально =)

DELETE t1 FROM userlogins t1, userlogins t2 WHERE t1.login=t2.login AND t1.ID != t2.ID

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Уникальных посетителей темы: 68

Июн 8

Zend Server CE установка и настройка для Windows (Windows Zend Server Community Edition)

Posted on Понедельник, июня 8, 2009 in php, ZendFramework, Новости

Установка Zend Server CE

Рассмотрим процедуру установки и настройки сборки Zend Server CE для Windows, напомню я уже делал обзор Zend Server.

И так, мы хотим установить себе Zend Server CE (далее по тексту ZS).

Первое что нам нужно сделать, это скачать последную версию с сайта:

http://www.zend.com/products/server/downloads-all


Там выбираем пакет для Windows, на момент написания это был файл:
zs1

Скачиваем…

Теперь перейдем к настройке и установке

  1. Запускаем скачанный файл
  2. Установка доступна в 3-х вариантах: Typical, Full and Custom
    Custom
    - вы сможете сами выбрать что поставить, а что нет =) (ВЫБИРАЕМ ЭТОТ ПУНКТ)
  3. Ставим галочки напротив нужных вещей
    zs2zs3
  4. Перейдете в диалог Destination Location где нужно выбрать КУДА ставить сервер, я советую выбирать путь такой c:\zs\ (описание будет данно для этого пути)
    zs4
  5. Порт apache выбираем 80
  6. В итоге будет поставлено:
    - PHP 5.2.9
     -- Common Extensions
     -- Additional Extensions
     -- Zend Optimizer+
     -- Zend Debugger
     -- Zend Data Cache
    - Zend Framework 1.8.2
     -- Zend Framework Base
    - phpMyAdmin
    - MySQL Server
    - Apache Web Server on port 80
  7. Жмем Install. Будет загруженно дополнительно phpmyadmin (почему то 2.11.9.3 – я обычно потом ставлю ветку 3.x) и mysql сервер.

Настройка Zend Server CE

Заходим в панель управления:
http://localhost/ZendServer/

zs5

Вводим свой пароль, входим. Там можете поиграть с GUI =)

Но мы пойдем дальше…

Первое что я меняю, так это делаю vhosts т.к. все таки мы не один сайт разрабатываем, а много, для этого делаем изменения:

1. У меня все сайты лежать в папке c:/www

2. Создаем файл c:/www/vhosts.conf в нем пишем наши сайты:

NameVirtualHost *:80

<VirtualHost 127.0.0.1>
ServerAdmin mail@mail.com
DocumentRoot «C:\www\phpmyadmin»
ServerName 127.0.0.1
ServerAlias www.phpmyadmin
</VirtualHost>

<VirtualHost 127.0.0.2>
ServerAdmin mail@mail.com
DocumentRoot «C:\www\site1″
ServerName 127.0.0.2
ServerAlias www.site1
</VirtualHost>

и т.д., меняем айпи и папку где лежит сайт.

3. Меняем конфиг апача c:/zs/Apache2/conf/httpd.conf

Добавим строку в конце:

Include c:/www/vhosts.conf

Строки:

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>

переделываем на

<Directory />
#    Options FollowSymLinks
#    AllowOverride None
#    Order deny,allow
#    Deny from all
</Directory>

4. Запустим апач, если все запустилось, то при открытии http://127.0.0.1 у нас будет phpMyAdmin (предварительно туда его желательно залить -) )

Собственно это все.

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Уникальных посетителей темы: 2 034

Июн 5

Zend Server 4.0.3 & Zend Studio 7.0 Early Access Release

Posted on Пятница, июня 5, 2009 in php, ZendFramework, Новости

studio-7-0-ea-imageВышли обновления для таких вещей как Zend Server до версии 4.0.3.

Основное это переход на PHP 5.3 (RC2).

Скачать Zend Server можно по ссылке:
http://www.zend.com/en/products/server/downloads-ea

Теперь более глобальное обновление Zend Studio до версии 7.0 !!!!

  • Zend Studio базируется на последней версии Eclipse (Galileo).
  • Поддержка PHP 5.3 (Namespace)
  • Улучшение редактора кода
  • Поддержка интеграции Zend Server

Теперь Zend Studio еще больше интегриновать с Zend Framework:

  • Легкое создание любых элементов Zend Framework
  • Настраиваемый дефолтный проект
  • Обновленные примеры работы
  • Интеграция Zend Tool

Скачать Zend Studio 7.0 и потестить можете по ссылке:
http://www.zend.com/en/products/studio/studio-7-early-access

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Уникальных посетителей темы: 57

Мар 30

Debug Bar для Zend Framework

Posted on Понедельник, марта 30, 2009 in php, ZendFramework, Новости

2009-scienta_debugbar

Сначала подобная штука появилась в Symfony, потом сделали для Kohana и CodeIgniter и теперь сделали для Zend Framework.

Читаем как установить и настроить по адресу: http://jokke.dk/software/scientadebugbar

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Уникальных посетителей темы: 45

Мар 24

ZendFramework 1.7.7

Posted on Вторник, марта 24, 2009 in php, ZendFramework, Новости

Как ни странно, но не в новостях на самом zend.com, ни в их рассылке (видемо сейчас вся команда _упорно_ работает над Zend Server) но вышла версия ZendFramework 1.7.7 !!!

Вот список изменений:

  • Zend_Amf with support for AMF0 and AMF3 protocols
  • Dojo Toolkit 1.2.1
  • Support for dijit editor available in the Dojo Toolkit
  • ZendX_JQuery in extras library (see extras folder in the full package
  • Metadata API in Zend_Cache
  • Google book search API in Zend_Gdata
  • Preliminary support for GData Protocol v2 in Zend_Gdata
  • Support for skip data processing in Zend_Search_Lucene
  • Support for Open Office XML documents in Zend_Search_Lucene indexer
  • Performance enhancements in Zend_Loader, Zend_Controller, and server components
  • Zend_Mail_Storage_Writable_Maildir enhancements for mail delivery
  • Zend_Tool in incubator (see incubator folder in the full package)
  • Zend_Text_Table for formatting table using characters
  • Zend_ProgressBar
  • Zend_Config_Writer
  • ZendX_Console_Unix_Process in the extras library
  • Zend_Db_Table_Select support for Zend_Paginator
  • Global parameters for routes
  • Using Chain-Routes for Hostname-Routes via Zend_Config
  • I18N improvements:
    - Application wide locale for all classes
    - Data retrieving methods are now static
    - Additional cache handling methods in all I18N classes
    - Zend_Translate API simplified

    • File transfer enhancements
      - Support for file elements in subforms
      - Support for multifile elements
      - Support for MAX_FILES_SIZE in form
      - Support for breaking validation chain
      - Support for translation of failure ,messages
      - New IsCompressed, IsImage, ExcludeMimeType, ExcludeExtension validators
      - Support for FileInfo extension in MimeType validator
    • Zend_Db_Table_Select adapater for Zend_Paginator
    • Support for custom adapters in Zend_Paginator
    • More flexible handling of complex types in Zend_Soap

    Полный список изменений и фиксов доступен по адресу:

    http://framework.zend.com/issues/secure/IssueNavigator.jspa?requestId=10970

    Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

    Уникальных посетителей темы: 32

    Мар 15

    Советы по оптимизации работы с MySQL

    Posted on Воскресенье, марта 15, 2009 in php, Новости

    На mysql.com появилась отличная статья по оптимизации работы с MySQL, линка: http://forge.mysql.com/wiki/Top10SQLPerformanceTips

    Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

    Уникальных посетителей темы: 14

    Мар 8

    Doctrine Pagination – Постраничная разбивка средствами Doctrine

    Posted on Воскресенье, марта 8, 2009 in Doctrine, php, ZendFramework, Новости

    В ZendFramework конечно есть модуль Pagination, но после его использования я решил поглядеть а что есть у Doctrine и нужно сказать что у нее это ЕСТЬ и реализованно неплохо!

    Оригинальное описание находится тут: http://www.doctrine-project.org/documentation/manual/1_0/en/utilities#pagination

    Пример использования:

    1. В контроллере пишем:

    $currentPage=$this->_getParam("pager"); // Номер страницы из роутера
    $resultsPerPage=20; // Cколько результатор на одной странице
    $pager_layout = new Doctrine_Pager_Layout (
    	new Doctrine_Pager (
     	  Doctrine_Query :: create ()
     	   	  ->from ( "Users u" )
     	   	  ->orderBy ( "id DESC" ),
     	   	   	  $currentPage ,
     	   	   	  $resultsPerPage
     	),
     	new Doctrine_Pager_Range_Sliding ( 
                 array ( "chunk" => 5 )),
    	      "/admin/users/index/{%page_number}"
    	);
     
    $pager_layout ->setTemplate ('<a href="{%url}" class="pager">{%page}</a> ');
    $pager_layout ->setSelectedTemplate ('<b class="pager">{%page}</b> ');
    $pager = $pager_layout ->getPager ();
    $users = $pager->execute();
     
    $this->view->pager = "Page: ".$pager_layout ->display('',true)." Total items: <b>".$pager->getNumResults()."</b>";

    2. В роутере пропишем:

    $router->addRoute('amdinUsers',
      new Zend_Controller_Router_Route('admin/users/index/:pager', 
        array('module' => 'admin', 'controller' => 'users', 'action' => 'index', 'pager' => '1')
      ));

    3. В виеве соответственно ловим:

    <div class="pager_box"><?php echo $this->pager ?></div>

    Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

    Уникальных посетителей темы: 172

    Фев 20

    Zend Server beta 1

    Posted on Пятница, февраля 20, 2009 in php, Новости

    zend-server-event-detailsСегодня Zend выпустил новый продукт, Zend Server beta1 ! Если кратко, то это «подобие» xampp, denwer и т.д. но от самой Zend.

    В данный продукт включены следующие компненты:

    • Apache 2.2.8
    • PHP 5.2.8
    • Zend Framework 1.7.4
    • PHP optimizer и кучу других продуктов Zend
    • Админский интерфейс для быстрой настройки и работы.

    Продукт доступен для windows, linux и macOS в двух редакциях:

    1. Zend Server – после beta он будет выпушен как отдельный коммерческий продукт и будет платным
    2. Zend Server CE – бесплатный сервер для разработчиков (он не станет платным)

    Для получения информации о продукте, перейдите по ссылке.

    Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

    Уникальных посетителей темы: 6

    Фев 4

    Декодирование строка вида %u04XX

    Posted on Среда, февраля 4, 2009 in php

    Когда из javascript приходит строка в виде:

    %u041A%u043E%u043C%u043F%u0430%u043D%u0438%u044F %u0418%u043D%u0441%u0430%u0439%u0442 (%u0418%u0440%u043A%u0443%u0442%u0441%u043A) | %u0424%u0438%u043D%u0430%u043D%u0441%u043E%u0432%u0430%u044F %u043A%u043E%u043C%u043F%u0430%u043D%u0438%u044F "%u0421%u0438%u0432%u0435%u0440

    То декодировать ее можно с помощью следующей функции:

    function global_decode($str) {
     
        return html_entity_decode(preg_replace_callback(
            '|(?:%u.{4})|',
            create_function(
                '$matches',
                'return \'&#\'.hexdec(substr($matches[0], 2)).\';\';'
            ),
            $str
        ),ENT_QUOTES, "utf-8");
    }

    В итоге получим UTF8 строку (либо заменим на CP1251 и получим в windows-1251)

    Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

    Уникальных посетителей темы: 45