рейтинг
5 голос
сила
11.32

Шпаргалки →  Установка Zend Framework на Denwer

1. Качаем Денвер http://www.denwer.ru/
2. Качаем пакет расширений http://www.denwer.ru/packages/php5.html
3. Ставим.
4. Пробуем инициализировать PEAR запускаем \usr\local\php5\go-pear.bat если ошибка does not have a signature тогда меняем файл. Изменения выделены.

===========================================================================
@ECHO OFF
set PHP_BIN=php.exe
%PHP_BIN% -d phar.require_hash=0 -d output_buffering=0 PEAR\go-pear.phar
pause
===========================================================================

Запускаем снова и следуем указаниям скрипта.

5. pear channel-discover pear.zfcampus.org
6. pear install zfcampus/zf

Тестируем: zf show version => Zend Framework Version: 1.10.0
0

Что новенького →  3 июля в Киеве пройдет конференция по Symfony

Конференция Symfony Camp UA 2010

Программа
08:30 — Начало регистрации участников
1 час

09:30 — Открытие конференции
30 мин

10:00 — LESS, SASS, HAML: 4 буквы, изменившие frontend development
Константин Кудряшов
30 мин

10:30 — Многоязычные сайты на Symfony. Проблемы и их решения
Игорь Бровченко
30 мин

11:00 — Symfony как платформа для open-source проектов, (Sympal, Apostrophe, Diem)
Александр Демченко
30 мин

11:30 — Кофе-брейк
30 мин

12:00 — Сontinuous Integration для Symfony
Игорь Бровченко
30 мин

12:30 — Перевод боевого сайта с ветки 1.0 на ветку 1.4
Руслан Ханов
30 мин

13:00 — Философия сервисов. Практическое применение в Symfony 1.3/1.4
Николай Зык
25 мин

13:25 — Автоматизируем деплоймент проекта с помощью Capistrano
Константин Кудряшов
20 мин

13:45 — Перевыв на обед
1 час

14:45 — Symfony Task – задачи батча (пакетной обработки). Как использовать, как улучшить
Александр Безрученко
30 мин

15:15 — Кастомизация генераторов в Symfony 1.3/1.4. Эффективное управление функционалом и структурой плагинов
Николай Зык
30 мин

15:45 — Внедрение компонента templating + Twig в существующий проект
Станислав Сметанин
30 мин

16:15 — Кофе-брейк
30 мин

16:45 — Symfony 2 – перезагрузка?
Александр Демченко
30 мин

17:15 — Этапы разработки реального проекта на Symfony 2 + Doctrine 2
Александр Скорней
30 мин

17:45 — Закрытие конференции
0

Смешинко →  Зачем нужен IPad ([:|||:] - баян)

В продолжение темы об использовании IPad, предлагаю вашему вниманию старый добрый баян.

2

Смешинко →  Зачем нужен IPad и как ним пользоваться

Компания Apple недавно презентовала свой новый гаджет под названием IPad. Видео рассказывает о том, как ним пользоваться.
2

Шпаргалки →  Загрузка файла при помощи Ajax

Как отправить файл на сервер аяксом.

Имеем форму:
<form method='post' enctype='multipart/form-data'>
<input type="file" id="imf" name="imf"/>
<input type="button" id="Save"/>
</form>

Отправляем методом пост содержимое файла и имя файла. Замечу, что данные придут в переменной $_POST. Далее, используя fwrite пишем файл, куда надо.
$("#Save").live("click", function(){

var photo = document.getElementById("imf");
var file  = photo.files[0];

   $.post('/user/saveNewPhoto', {'imf':file.getAsDataURL(), fname:file.fileName }, function( data ){
   alert ( data );
    });

});

На больших файлах не опробовано.
2

Говнокод →  Польский говнокод

if($rs===false){
        $rs='false';
}
elseif($rs=="dup"){
        $rs = "dup";
}
elseif($rs=="bad_link"){
        $rs = "bad_link";
}
else{
        $rs = 'true';
}
2

PHP программирование →  Асинхронность с помощью fastcgi_finish_request()

При оптимизации приложения важно не забывать о том, что оптимизируем мы прежде всего для клиента. Сайт, который работает медленно, это всегда неудобно и плохо.

Главный критерий оптимизации для клиента — это скорость ответа (т.е. время, за которое Web сервер отвечает на запрос). Если не брать во внимание клиентскую оптимизацию, есть ряд практик, позволяющих быстрее генерировать ответ клиенту (по сути без оптимизации внутренностей).

Одна из распространенных практик — это переводить необязательную для ответа часть логики в асинхронную обработку. Для этой задачи применяются очереди сообщений.

Если Вы счастливый обладатель связки PHP + PHP-FPM, то существует более простой (хотя и несколько ограниченный) подход для реализации асинхронности. После сборки патча php-fpm, Вам станет доступна функция:

fastcgi_finish_request();

После ее вызова из скрипта, php-fpm получает сигнал о завершении запроса (т.е. отправляет ответ Web серверу), но сам скрипт не завершается. Т.е. вся логика, которая находится после вызова этой функции будет выполнена на фоне.

Для примера рассмотрим задачу отправки письма (зачастую, весьма медленный процесс):

$to = $_POST['to'];
$body = $_POST['body'];
$subject = $_POST['subject'];

if ( $to && $body && $subject )
{
        echo 'Ваше письмо успешно отправлено';
        # После этой инструкции посетителю уйдет ответ
        fastcgi_finish_request();
        # Сама отправка будет выполнена на фоне
        mail($to, $subject, $body);
}
else
{
        echo 'Вы не ввели все необходимые данные';
}

Это самый простой пример, но, как видно, затраты на внедрение этого ощутимого улучшения минимальны. Другие примеры: загрузка фото с последующим ресайзингом, загрузка видео с последующей конвертацией, отправка сообщения всем друзьям (либо просто нескольким людям) и т.п.

Вам приходилось пользоваться fastcgi_finish_request(), и если да, то в каких случаях?
1

PHP программирование →  Переход от php4 к php5 (Статические члены класса. Исключения, определённые пользователем. Пространства имен)

Начало:
http://php5.com.ua/blog/php-programming/133.html
http://php5.com.ua/blog/php-programming/134.html
http://php5.com.ua/blog/php-programming/135.html

Статические члены класса


Статические члены и статические методы могут использоваться для реализации того, что в ООП называется «методы класса» и «переменные класса».

«Статическим методом класса» называют метод, который можно вызвать без создания объекта этого класса.
«Переменной класса» называют переменную, к которой можно обратиться без создания объекта этого класса (и метод доступа при этом не потребуется).

Пример: методы класса и переменные класса
<?php
class calculator {
  static public $pi = 3.14151692;

  static public function add($x,$y) {
    return $x + $y;
  }
}

$s = calculator::$pi;
$result = calculator::add(3,7);
print("$result");
?>

Исключения — это общепринятый подход к обработке ошибок и неожиданных ситуаций в таких языках как Java и C++; в PHP5 перехват исключений реализован с помощью пары «try» — «catch».

Пример: Исключения
<?php class foo {

  function divide($x,$y) {
    if($y==0) throw new Exception("деление на ноль недопустимо");
    return $x/$y;
  }
}

$x = new foo();

try {
  $x->divide(3,0);  
} catch (Exception $e) {
    echo $e->getMessage();
    echo "\n<br />\n";
    // Какие-нибудь драконовские меры
}
?>


Как вы видите, «try» используется для обозначения блока, в котором находятся ошибки, обрабатываемые оператором «catch», стоящим в конце блока. В блоке «catch» вам нужно реализовать вашу собственную политику обработки ошибок. В итоге получаем удобочитаемый код и всего один блок обработки ошибок.

Исключения, определённые пользователем


Для обработки непредвиденных проблем в ваших программах вы можете определить ваши собственные исключения. Всё, что вам нужно — это просто дополнить (extend) класс Exception, определив конструктор класса и метод getMessage.

Пример: Исключения, определённые пользователем

<?php
class WeirdProblem extends Exception {

   private $data;

   function WeirdProblem($data) {
        parent::exception();
        $this->data = $data;
    }

    function getMessage() {
        return $this->data . " вызвало какое-то странное исключение!";
    }
}
?>


Потом, для возбуждения определённого вами исключения используйте конструкцию throw new WeirdProblem($foo); если исключение происходит внутри блока try{}, то PHP5 передаст управление в «catch»-блок для обработки.

Пространства имён


В целях удобства классы и функции могут быть сгруппированы в пространства имён (namespaces).

Примечение: разработчики отказались от поддрежки этой возможности.

Пример: Пространство имён
<?php
namespace Math {

  class Complex {
    //...код...
    function __construct() {
      print("привет");
    }
  }
}

$m = new Math::Complex();
?>

Обратите внимание на синтаксис использования именного пространства для обозначения класса, объект которого мы создаём. Пример практического применения: создание одноимённых классов в разных именных пространствах; при этом классы делают отличную друг от друга работу (имея одинаковый интерфейс).
1
←  сюда    туда  →
1 2 3 4 5