2011年4月6日 星期三

ZendFramework的預設route

 當我們的網址Action 為group-user-add
ctrl會對應至public function groupUserAddAction()
而 view會對應至group-user-add.phtml 




當使用group_user_add
ctrl會對應至groupuseradd
而view還是會對應至group-user-add.phtml
所以可以利用下底線的組合來共用同名ctrl切換不同view?

是偶然嗎?

2011年4月1日 星期五

Zend_Session

Zend_Session::rememberMe();

不帶參數的話,可以使SESSION生命週期為兩周
 帶參數的話以秒為單位。

2011年3月30日 星期三

Zend_Cache 檔案快取

//設定緩存生命期
 $frontendOptions = array('lifeTime' =>5, // 5秒
 ’automatic_serialization’ => true);
 //放緩存文件的目錄);
 $backendOptions = array('cache_dir' => './temp/cache');
 //取得一個Zend_Cache_Core 對象
 $cache = Zend_Cache::factory('Core','File',$frontendOptions,$backendOptions);
 //取緩存數據
 if(!$cacheBuffer = $cache->load(‘mycache’)){
  //如果沒有命中,則重新生成緩存
  $data=array(
   ”測試zend 的 cache”,time()
  );
  //將數據系列化後存入緩存文件
  $cache->save($data, ‘mycache’);
  //echo “ok”;
 }else{
  //將取出的數據反序列列化
  $data=unserialize($cacheBuffer);
 }

2011年3月18日 星期五

php-migrations

在ruby中有方便的
rake db:migrate
可以在開發環境中方便的做
 
資料庫的版本控制(結構的新增與回復)
PHP也有clone的版本
mysql-php-migrations
http://code.google.com/p/mysql-php-migrations/ 
使用方式
執行
php migrate.php add
 
 會依日期建立某版本號
 
在其中
 
 public function up(PDO &$pdo)
        {
                $pdo->exec("ALTER TABLE `test0` ADD `field1` VARCHAR(24) NOT NULL");
        }

        public function down(PDO &$pdo)
        {
                $pdo->exec("ALTER TABLE `test0` DROP `field1`");
        }
去寫新增或回滾的SQL語法就行

2011年3月1日 星期二

網頁強制不緩衝(HTML & PHP)

HTML
  
<meta http-equiv="Pragma" content="no-cache">  
<meta http-equiv="no-cache">  
<meta http-equiv="Expires" content="-1">  
<meta http-equiv="Cache-Control" content="no-cache">  
  
PHP
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');  
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');  
header('Cache-Control: no-store, no-cache, must-revalidate');  
header('Cache-Control: post-check=0, pre-check=0', false );  
header('Pragma: no-cache');  


資料來源:
HTML、ASP、PHP 強制不緩存頁面代碼(SOUGEE)

2011年2月11日 星期五

Sybase datetime格式

Sybase中的date格式需使用date轉成ISO8601標準格式寫入
比較時間也是

先轉為時間戳記在轉為YMD

date('Y-m-d H:i:s',strtotime($rs['sendDate']))

date( "Y-m-d", strtotime($mInfo['PubDate']))

2011年2月10日 星期四

Zend Framework連接Sybase

使用ZendFrame work時需在主機上安裝

dblib
 指定設定檔的

resources.db.adapter = "PDO_MSSQL"
resources.db.params.pdoType = "dblib"

在zend model update會發生型態問題

Implicit conversion from datatype 'VARCHAR' to 'INT' is not allowed


不知為什麼ZF不判斷型態





可透過
protected $_metadata = array(

  '' => array(
        'SCHEMA_NAME'      => ,
        'TABLE_NAME'       => ,
        'COLUMN_NAME'      => ,
        'COLUMN_POSITION'  => ,
        'DATA_TYPE'        => ,
        'DEFAULT'          => NULL|,
        'NULLABLE'         => ,
        'LENGTH'           => ,
        'SCALE'            => NULL|,
        'PRECISION'        => NULL|,
        'UNSIGNED'         => NULL|,
        'PRIMARY'          => ,
        'PRIMARY_POSITION' => ,
        'IDENTITY'         => ,
    ),
    // additional columns...
);
自行定義 metadata
或在data中使用SQL轉型
'sort_no' => new Zend_Db_Expr('convert(int,' . $sort_no . ') ')
Sybase轉型為int型態 
convert(int,' . $sort_no . ')

目前沒在mysql上發現問題,在Sybase卡了很久,使用settype()及(int)在PHP上轉型
進入ZF的update後!!都不行只好透過以上方法!! 

自動編號需使用identity