開発環境整備する zendを動かしてみる

なんか一度書いたエントリーがきえてるっぽいですなぁ
zendのテスト
php.iniに
/etc/php5/apache2/php.ini

include_path = ".:/usr/lib/php5/ZendFramework/library"

httpdに設定する。
ubuntuのapache2は/etc/apache2/apache2.confみたい。httpd.confは空でした

DirectoryIndex index.php index.html index.htm
AddType application/x-httpd-php .php

でいいかな

確認

get(Zend_Date::RFC_2822);
echo "
";
?>
なものを用意して動かす。大丈夫そうですね。

DB接続確認

mysqlにzendtestデータベースを作成
testテーブルも作成と5行ぐらい入れておく。
ユーザーを作成。
もちろんphpmyadminで作ります。

適当にフォルダでも掘ります。最後は安全なところに持って行くのだとおもいます。
このまえzendで遊んでいた頃に用意したものを流用します。

; 基本設定情報
[global]
;base_path         = "/usrdoc/zendpractice/public/" ;;いらね
base_path         = "/var/www/zend/" ;;要らないだろうけど
;path              = "http://192.168.11.202/zendpractice/public/" ;;不要
;view_path         = "../application/views/scripts/" ;;不要

; データソース設定(DB動作確認用テスト)
[datasource]
database.type     = Pdo_Mysql
database.host     = 127.0.0.1
database.username = zenddev
database.password = zend
database.name     = zendtest
database.charaq   = "set names 'utf8'"

;;;; データソース設定(DB1)
;;;[tendodb]
;;;database.type     = Pdo_Mysql
;;;database.host     = 127.0.0.1
;;;database.username = zenddev
;;;database.password = zend
;;;database.name     = zendtest
;;;database.charaq   = "set names 'utf8'"

; ログファイル設定 起点がいつも混乱する../なのか
[logfile]
all                  = "/var/www/zend/log/zend_practice_log_all_"
danger               = "/var/www/zend/log/zend_practice_log_danger_"
maillog              = "/var/www/zend/log/zend_practice_log_maillog_"
//commonなphp
<?php
/**
   * common class
   * commonなエトセトラ
*/
//require for Zend Loader
//require_once 'Zend/Loader.php'; //not use
class MyConfig
{
    public function getConfig($source = null){
        //require for config
        require_once 'Zend/Config/Ini.php';
        //init config
        $config = new Zend_Config_Ini('./common/config_dev.ini',$source);
        //var_dump($config);
        return $config;
    }
}

//執拗なtry nakas遺伝子
class MyLogger{
    //loggerのインスタンスを返す
    public function getLogger($type='logfile'){
        //logはとっておけ。
        $logger = null;

        //require for log
        require_once 'Zend/Log.php';
        require_once 'Zend/Log/Writer/Stream.php';

        try{
        $instance  = new MyConfig();
        $config    = $instance->getConfig($type);

        $logger    = new Zend_Log();
        $alllog    = new Zend_Log_Writer_Stream($config->all     . date("y_m_d") . '.txt');
        $dangerlog = new Zend_Log_Writer_Stream($config->danger  . date("y_m_d") . '.txt');
        $maillog   = new Zend_Log_Writer_Stream($config->maillog . date("y_m_d") . '.txt');

        $logger->addWriter($alllog);
        $logger->addWriter($dangerlog);
        $logger->addWriter($maillog);

        //ユーザー定義メール記録
        $logger->addPriority('MAIL',9);

        //addfilter
        $dangerlog->addFilter(Zend_Log::CRIT);
        $filter = new Zend_Log_Filter_Priority(9);
        $maillog->addFilter(Zend_Log::WARN);
        }catch(Zend_Exception $e){return false;}
        return $logger;
    }

    //直接書き込み 
    public function logInfo($string){
        try{
        $logger = MyLOgger::getLogger();
        $logger->log($string,Zend_Log::INFO);
        }catch(Zend_Exception $e){return false;}
        return true;
    }
    //直接書き込み danger
    public function logDanger($string){
        try{
        $logger = MyLOgger::getLogger();
        $logger->log($string,Zend_Log::CRIT);
        }catch(Zend_Exception $e){return false;}
        return true;
    }

    //直接書き込み mail
    public function logMail($string){
        try{
        $logger = MyLOgger::getLogger();
        $logger->log($string,4);
        }catch(Zend_Exception $e){return false;}
        
        return true;
    }
}

class MyDb{
    public function getDb($type = 'datasource'){
        $db = null;
        //require for db
        require_once 'Zend/Db.php';
        //webなのでtry
        try{    
        $instance  = new MyConfig();
        $config    = $instance->getConfig($type);
        $params    =array('host'      => $config->database->host,
                          'username'  => $config->database->username,
                          'password'  => $config->database->password,
                          'dbname'    => $config->database->name,
                          );
        $db        = Zend_Db::factory($config->database->type , $params);
        //よくありがちな初期設定はしておく
        $db->query($config->database->charaq);
        $db->setFetchMode(Zend_Db::FETCH_ASSOC);
        }catch(Zend_Exception $e){
            MyLogger::logDanger('DB接続不全');
        }
        return $db;
    }

    //明示的にクローズする場合 たぶん自動クローズは。。。どうなんでしょうね?
    public function close($db){
        $db->closeConnection();
    }
}
<?
//@zenddbtest.php
require_once './common/common.php';

/*logger動作確認
echo Mylogger::logInfo('direct')."\n";
echo Mylogger::logDanger('direct')."\n";
echo Mylogger::logMail('direct')."\n";

/*db説続テスト
$db = MyDb::getDb();
//var_dump($db);
$sql = 'select '
     .     '*'
     . 'from '
     .     'test';
$result = $db->fetchAll($sql);
ar_dump($result);
MyDb::close($db);
?>

大丈夫そうですね。
今日はここまで。明日はtwitterにつないでみます。
pearでうれしくtwitterさせてくれるライブラリを入れたのですが、つないでみて、「なんか違う」という違和感を持っている今。