2015年6月12日 星期五

編譯php時指定php.ini位置

在compile php時,可以透過--with-config-file-path 參數來指定位置,可以從原始碼複製php.ini 通常有兩個選擇 一個是開發階段的參數 一個則是生產階段的參數

2015年5月7日 星期四

getConstants

php中反射(ReflectionClass)的語法


如果想要取得物件中取得const的陣列可以使用



    const STATE0 = 'open';
    const STATE1 = 'close';
    const STATE2 = 'run1';
    const STATE3 = 'run2';
    const STATE4 = 'run3';
   
    static function getConstants() {
        $oClass = new ReflectionClass(__CLASS__);
        return $oClass->getConstants();
    }

2014年6月14日 星期六

生為ZF的擁護者 來看一下Fedora 20 Yum lib的收藏清單

該如何下手呢?先看一下Fedora20 的Yum 收藏清單
yum search ZendFramework2

php-ZendFramework2 : Zend Framework 2
php-ZendFramework2-Authentication : Zend Framework 2: Authentication Component
php-ZendFramework2-Barcode : Zend Framework 2: Barcode Component
php-ZendFramework2-Cache : Zend Framework 2: Cache Component
php-ZendFramework2-Cache-apc : Zend Framework 2: Cache Component: APC
php-ZendFramework2-Cache-memcached : Zend Framework 2: Cache Component: Memcached
php-ZendFramework2-Captcha : Zend Framework 2: CAPTCHA Component
php-ZendFramework2-Code : Zend Framework 2: Code Component
php-ZendFramework2-Config : Zend Framework 2: Config Component
php-ZendFramework2-Console : Zend Framework 2: Console Component
php-ZendFramework2-Crypt : Zend Framework 2: Crypt Component
php-ZendFramework2-Db : Zend Framework 2: DB Component
php-ZendFramework2-Debug : Zend Framework 2: Debug Component
php-ZendFramework2-Di : Zend Framework 2: DI Component
php-ZendFramework2-Dom : Zend Framework 2: DOM Component
php-ZendFramework2-Escaper : Zend Framework 2: Escaper Component
php-ZendFramework2-EventManager : Zend Framework 2: EventManager Component
php-ZendFramework2-Feed : Zend Framework 2: Feed Component
php-ZendFramework2-File : Zend Framework 2: File Component
php-ZendFramework2-Filter : Zend Framework 2: Filter Component
php-ZendFramework2-Form : Zend Framework 2: Form Component
php-ZendFramework2-Http : Zend Framework 2: HTTP Component
php-ZendFramework2-I18n : Zend Framework 2: i18n Component
php-ZendFramework2-InputFilter : Zend Framework 2: InputFilter Component
php-ZendFramework2-Json : Zend Framework 2: JSON Component
php-ZendFramework2-Ldap : Zend Framework 2: LDAP Component
php-ZendFramework2-Loader : Zend Framework 2: Loader Component
php-ZendFramework2-Log : Zend Framework 2: Log Component
php-ZendFramework2-Mail : Zend Framework 2: Mail Component
php-ZendFramework2-Math : Zend Framework 2: Math Component
php-ZendFramework2-Memory : Zend Framework 2: Memory Component
php-ZendFramework2-Mime. : Zend Framework 2: MIME Component
php-ZendFramework2-ModuleManager : Zend Framework 2: ModuleManager Component
php-ZendFramework2-Mvc : Zend Framework 2: MVC Component
php-ZendFramework2-Navigation : Zend Framework 2: Navigation Component
php-ZendFramework2-Paginator : Zend Framework 2: Paginator Component
php-ZendFramework2-Permissions-Acl : Zend Framework 2: Permissions ACL Component
php-ZendFramework2-Permissions-Rbac : Zend Framework 2: Permissions RBAC Component
php-ZendFramework2-ProgressBar : Zend Framework 2: ProgressBar Component
php-ZendFramework2-Serializer : Zend Framework 2: Serializer Component
php-ZendFramework2-Server : Zend Framework 2: Server Component
php-ZendFramework2-ServiceManager : Zend Framework 2: ServiceManager Component
php-ZendFramework2-Session : Zend Framework 2: Session Component
php-ZendFramework2-Soap : Zend Framework 2: SOAP Component
php-ZendFramework2-Stdlib : Zend Framework 2: Stdlib Component
php-ZendFramework2-Tag : Zend Framework 2: Tag Component
php-ZendFramework2-Test : Zend Framework 2: Test Component
php-ZendFramework2-Text : Zend Framework 2: Text Component
php-ZendFramework2-Uri : Zend Framework 2: URI Component
php-ZendFramework2-Validator : Zend Framework 2: Validator Component
php-ZendFramework2-Version : Zend Framework 2: Version Component
php-ZendFramework2-View : Zend Framework 2: View Component
php-ZendFramework2-XmlRpc : Zend Framework 2: XML-RPC Component

2012年12月14日 星期五

安裝 composer

curl -s http://getcomposer.org/installer| php
由網頁安裝 composer
vim composer.json
編輯使用參數
php composer.phar install
安裝套件包

2012年6月27日 星期三

Zend Framework多資料庫設定

因為在ZF中資料庫是以資源的方式提供
所以在application.ini中設置
[production]
resources.multidb.db1.adapter = "pdo_mysql"
resources.multidb.db1.host = "localhost"
resources.multidb.db1.username = "webuser"
resources.multidb.db1.password = "XXXX"
resources.multidb.db1.dbname = "db1"
resources.multidb.db2.adapter = "pdo_pgsql"
resources.multidb.db2.host = "example.com"
resources.multidb.db2.username = "dba"
resources.multidb.db2.password = "notthatpublic"
resources.multidb.db2.dbname = "db2"
resources.multidb.db2.default = true
再由Bootstrap取得資料庫

$resource = $bootstrap->getPluginResource('multidb');
$db1 = $resource->getDb('db1');
$db2 = $resource->getDb('db2');
$defaultDb = $resource->getDb();

2012年6月22日 星期五

ZendFramework的bootstrap

在ZendFramework的bootstrap中,如果方法名稱以_init為前綴,將被當成資源方法
來自動執行,如果你手上有現成的資源插件(Pluging),可以透過前導的方法 將該資源
排定執行 但該注意的是 當你是使用module模式時 所有module下的bootstrap將會全部
執行 造成 資源重載  效能低下 後來是以取得該module name為判斷 當非執行該module就return 不繼續執行執行非該module的pluging


class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initView()
    {
        $view = new Zend_View();
        // more initialization...
        return $view;
    }
}
class FooController extends Zend_Controller_Action
{
    public function init()
    {
        $bootstrap = $this->getInvokeArg('bootstrap');
        $view = $bootstrap->getResource('view');
        // ...
    }
}

2011年11月15日 星期二

Linux Pipe小工具

Linux sort的常用
按照第5個字段進行排序
[root@test2 smartlsData]# ll | sort -t : +5n-rwxrwxrwx 1 root root 178718700 12月22 18:40 Poi.bal-rwxrwxrwx 1 root root 182348152 12月22 18:40 Poi.bas-rwxrwxrwx 1 root root 18441600 12月22 18:40 Poi.ndx-rwxrwxrwx 1 root root 194056 2006-08-29 wordTableEntry.txt-rwxrwxrwx 1 root root 194056 9月15 16:31 GeoWordTableEntry.txt-rwxrwxrwx 1 root root 20580 12月22 18:40 ACode.ndx-rwxrwxrwx 1 root root 338304 2006-08-10 AnTable.txt-rwxrwxrwx 1 root root 43680 2006-08-10 CnTable.txt-rwxrwxrwx 1 root root 4929920 2006-08-29 wordTable.txt-rwxrwxrwx 1 root root 4929920 9月15 16:31 GeoWordTable.txt-rwxrwxrwx 1 root root 6664 9月14 16:25 data.xml-rwxrwxrwx 1 root root 9220800 12月22 18:40 LsID.idx
按照純數字進行排序(否則按照字母方式進行排序)
[root@test2 smartlsData]# ll | sort -n-rwxrwxrwx 1 root root 178718700 12月22 18:40 Poi.bal-rwxrwxrwx 1 root root 182348152 12月22 18:40 Poi.bas-rwxrwxrwx 1 root root 18441600 12月22 18:40 Poi.ndx-rwxrwxrwx 1 root root 194056 2006-08-29 wordTableEntry.txt-rwxrwxrwx 1 root root 194056 9月15 16:31 GeoWordTableEntry.txt-rwxrwxrwx 1 root root 20580 12月22 18:40 ACode.ndx-rwxrwxrwx 1 root root 338304 2006-08-10 AnTable.txt-rwxrwxrwx 1 root root 43680 2006-08-10 CnTable.txt-rwxrwxrwx 1 root root 4929920 2006-08-29 wordTable.txt-rwxrwxrwx 1 root root 4929920 9月15 16:31 GeoWordTable.txt-rwxrwxrwx 1 root root 6664 9月14 16:25 data.xml-rwxrwxrwx 1 root root 9220800 12月22 18:40 LsID.idx總用量 390484


Linux wc 的使用
wc -l 行號
wc -m
wc -w
[root@test2 smartlsData]# ll | wc -l13
替換
[root@test2 smartlsData]# ll | tr -d 'A'總用量 390484-rwxrwxrwx 1 root root 20580 12月22 18:40 Code.ndx-rwxrwxrwx 1 root root 338304 2006-08-10 nTable.txt-rwxrwxrwx 1 root root 43680 2006-08-10 CnTable.txt-rwxrwxrwx 1 root root 6664 9月14 16:25 data.xml-rwxrwxrwx 1 root root 194056 9月15 16:31 GeoWordTableEntry.txt-rwxrwxrwx 1 root root 4929920 9月15 16:31 GeoWordTable.txt-rwxrwxrwx 1 root root 9220800 12月22 18:40 LsID.idx-rwxrwxrwx 1 root root 178718700 12月22 18:40 Poi.bal-rwxrwxrwx 1 root root 182348152 12月22 18:40 Poi.bas-rwxrwxrwx 1 root root 18441600 12月22 18:40 Poi.ndx-rwxrwxrwx 1 root root 194056 2006-08-29 wordTableEntry.txt-rwxrwxrwx 1 root root 4929920 2006-08-29 wordTable.txt
[root@test2 smartlsData]# ll | cut -d " " -f 4
 
rootrootrootrootrootrootrootrootrootrootrootroot
拆分 按照大小 和 行 來拆分
split -b 1m detailWebsite.htm detailWebsite.htm_split -l 5 detailWebsite.htm detailWebsite.htm_

yum 收藏的php pear庫

yum list |grep php-pear|cut -d " " -f 1
php-pear.noarch
php-pear-Auth.noarch
php-pear-Auth-OpenID.noarch
php-pear-Auth-RADIUS.noarch
php-pear-Auth-SASL.noarch
php-pear-Auth-Yubico.noarch
php-pear-Auth-radius.noarch
php-pear-Auth-samba.noarch
php-pear-Auth_HTTP.noarch
php-pear-Benchmark.noarch
php-pear-CAS.noarch
php-pear-Cache.noarch
php-pear-Cache-Lite.noarch
php-pear-CodeGen.noarch
php-pear-CodeGen-PECL.noarch
php-pear-Console-Color.noarch
php-pear-Console-CommandLine.noarch
php-pear-Console-Getargs.noarch
php-pear-Console-ProgressBar.noarch
php-pear-Console-Table.noarch
php-pear-Crypt-Blowfish.noarch
php-pear-Crypt-CHAP.noarch
php-pear-DB.noarch
php-pear-DB-DataObject.noarch
php-pear-DB-DataObject-FormBuilder.noarch
php-pear-DB-QueryTool.noarch
php-pear-Date.noarch
php-pear-Date-Holidays.noarch
php-pear-Date-Holidays-USA.noarch
php-pear-Event-Dispatcher.noarch
php-pear-File.noarch
php-pear-File-Bittorrent2.noarch
php-pear-File-Find.noarch
php-pear-File-Passwd.noarch
php-pear-File-SMBPasswd.noarch
php-pear-HTML-Common.noarch
php-pear-HTML-QuickForm.noarch
php-pear-HTML-QuickForm-ElementGrid.noarch
php-pear-HTML-QuickForm-advmultiselect.noarch
php-pear-HTML-Table.noarch
php-pear-HTML-Template-IT.noarch
php-pear-HTML_Javascript.noarch
php-pear-HTML_Template_PHPLIB.noarch
php-pear-HTTP.noarch
php-pear-HTTP-Client.noarch
php-pear-HTTP-OAuth.noarch
php-pear-HTTP-Request.noarch
php-pear-HTTP-Request2.noarch
php-pear-HTTP-Upload.noarch
php-pear-Image-Canvas.noarch
php-pear-Image-Color.noarch
php-pear-Image-Graph.noarch
php-pear-Image-GraphViz.noarch
php-pear-Log.noarch
php-pear-MDB2.noarch
php-pear-MDB2-Driver-mysql.noarch
php-pear-MDB2-Driver-mysqli.noarch
php-pear-MDB2-Driver-pgsql.noarch
php-pear-MDB2-Schema.noarch
php-pear-Mail.noarch
php-pear-Mail-Mime.noarch
php-pear-Mail-mimeDecode.noarch
php-pear-Math-Stats.noarch
php-pear-Net-Curl.noarch
php-pear-Net-DIME.noarch
php-pear-Net-DNS.noarch
php-pear-Net-FTP.noarch
php-pear-Net-IDNA2.noarch
php-pear-Net-IPv4.noarch
php-pear-Net-POP3.noarch
php-pear-Net-Ping.noarch
php-pear-Net-SMTP.noarch
php-pear-Net-Sieve.noarch
php-pear-Net-Socket.noarch
php-pear-Net-Traceroute.noarch
php-pear-Net-URL.noarch
php-pear-Net-URL-Mapper.noarch
php-pear-Net-URL2.noarch
php-pear-Net-UserAgent-Detect.noarch
php-pear-Numbers-Roman.noarch
php-pear-Numbers-Words.noarch
php-pear-OLE.noarch
php-pear-PEAR-Command-Packaging.noarch
php-pear-PHP-CodeSniffer.noarch
php-pear-PHP-Compat.noarch
php-pear-PHP-CompatInfo.noarch
php-pear-Pager.noarch
php-pear-Payment-Process.noarch
php-pear-PhpDocumentor.noarch
php-pear-PhpDocumentor-docs.noarch
php-pear-SOAP.noarch
php-pear-Services-Twitter.noarch
php-pear-Services-Weather.noarch
php-pear-Spreadsheet-Excel-Writer.noarch
php-pear-Structures-DataGrid.noarch
php-pear-Structures-DataGrid-DataSource-Array.noarch
php-pear-Structures-DataGrid-DataSource-DataObject.noarch
php-pear-Structures-DataGrid-DataSource-MDB2.noarch
php-pear-Structures-DataGrid-DataSource-RSS.noarch
php-pear-Structures-DataGrid-Renderer-Pager.noarch
php-pear-Structures-DataGrid-Renderer-Smarty.noarch
php-pear-Text-Diff.noarch
php-pear-Validate.noarch
php-pear-Validate-Finance-CreditCard.noarch
php-pear-Var-Dump.noarch
php-pear-XML-Beautifier.noarch
php-pear-XML-Parser.noarch
php-pear-XML-RPC2.noarch
php-pear-XML-RSS.noarch
php-pear-XML-Serializer.noarch
php-pear-phing.noarch



Additional PEAR Library

PHPUnit (for Unit Testing)

PHPMailer

Zend Framework

PEAR Package - Excel and Spreadsheet (Reference Only)


Reference

PHP - Email

Bounce Email Tracking

PHP Bulk Email - Best Practice

phplist Features

Wiki

Software

2011年11月14日 星期一

Zend Framework 輸出xml的幾種方法

Zend Framework 輸出xml的幾種方法。
 見代碼:1.



    class TestController extends Zend_Controller_Action {
        
/**
         
* The default action - show the home page
         
*/
        
public function indexAction() {
            
$content = "bar";
            
header('Content-Type: text/xml');
            
echo $content;
            
exit;
        
}
    
}





加一句exit;這樣可以不用關閉view.
2.

    
class TestController extends Zend_Controller_Action {
        
/**
         
* The default action - show the home page
         
*/
        
public function indexAction() {
         
// XML-related routine
            
$xml = new DOMDocument('1.0', 'utf-8');
            
$xml->appendChild($xml->createElement('foo', 'bar'));
            
$output = $xml->saveXML();
            
// Both layout and view renderer should be disabled
            
Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->setNoRender(true);
            
Zend_Layout::getMvcInstance()->disableLayout();
  
            
// Setting up headers and body
            
$this->_response->setHeader('Content-Type', 'text/xml; charset=utf-8')
                    
->setBody($output);
        
}
  
    
}
第二種方法可以調用DOMDocument對象來創建更豐富的xml.
本文出自“Bob” 博客,請務必保留此出處http://phpbob.blog.51cto.com/636017/631102

2011年10月3日 星期一

Function session_register() is deprecated

session_register()函式在php5.3環境下
是不給用的
建議
if(session_register( “abc” )){
    echo 'XXX';
}

改為
if($_SESSION['abc'] = null){
   echo 'XXX';
}

function ereg() is deprecated

php5.3之後關於正規表示式會出現錯誤

function ereg() is deprecated 

請修改函式

ereg("^[0-9]*$",$page)

為

preg_match("/^[0-9]*$/",$page)

function eregi() is deprecated


eregi("^[0-9]*$",$page)

為

preg_match("/^[0-9]*$/i",$page)




function split is deprecated

split函式改為

explode
 
如果第一個參數為正規表示式則改為 

preg_split

function ereg_replace is deprecated

$t_lang_var = ereg_replace( '^TLS_', '', $t_var );

改為 

$t_lang_var = preg_replace( '/^TLS_/', '', $t_var );





2011年7月17日 星期日

ZF 在多個地方放置模組

如果想將模組分為核心及外加模組,可透過ZF本身定義設定檔的方式
由
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

 修改為
resources.frontController.moduleDirectory[] = APPLICATION_PATH "/modules/core"
resources.frontController.moduleDirectory[] = APPLICATION_PATH "/modules/local"

可以定義多個放置module位置

2011年7月5日 星期二

PHP讀取資料夾內檔案列表

PHP的內建函式,以物件的方式處理,可以用來顯示資料夾內的檔案


$d = dir($Path); 
while( $entry = $d->read() ){
  if ($entry!= “.” && $entry!= “..”) {
  
 }
}
closedir($d);

PHP遞迴建資料夾

function mkdirs($dir)
{
if(!is_dir($dir))
{
if(!mkdirs(dirname($dir))){
 return false;
}
if(!mkdir($dir,0777)){
 return false;
}
 }
return true;
 }

2011年7月3日 星期日

ZF 啟用模組功能

使用ZF的建立工具

新增module的功能可以發現

他會在 application.ini中新增

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

這樣便可啟用模組功能

2011年4月22日 星期五

ZendFramework使用FreeTDS連接Sybase

請務必把/etc/freetds.conf

中該資料庫  的TDS版本 設定為tds version = 6.3 或 6.0才會正常

ZF的INI設定

resources.db.adapter = "PDO_MSSQL"
resources.db.params.pdoType = "dblib"
resources.db.params.host = "名稱"
resources.db.params.username = "帳號"
resources.db.params.password = "密碼"
resources.db.params.dbname = "資料庫名稱"


如果沒有設成tds version = 6.3
會有登入錯誤的問題

(SQLSTATE[28000] Login incorrect. (severity 9) )

參考

http://blog.wabow.com/archives/335

2011年4月17日 星期日

PHP的__call

在Ruby中如果呼叫該物件沒有的方法時可透過(method_missin)來處理
def method_missing(id, *args)
    return self.find(Regexp.last_match(1),  args[0]) if id.id2name =~ /find_by_(.+)/
    raise NoMethodError
  end

如果是PHP則透過__call來達到同等的目的

詳見

活用 PHP5 的 magic methods


2011年4月7日 星期四

ZendFramework的分頁

       
         網路上很像很少人在講Zend_Paginator::factory
         這個ZF原裝分頁類
        在初始化(factory)時,可以用ZF_model或array都可以分頁


        $Plists = $qunit -> getList(0);
       
        //分頁設定
         $limit = $this -> _getParam('limit', 10);
         $page = $this -> _getParam('page', 1);
       

           //分頁
          
        $paginator = Zend_Paginator::factory($Plists);
       
        $paginator -> setCurrentPageNumber($page)
             -> setItemCountPerPage($limit);
        $uCount = $paginator ->getTotalItemCount();

        $this -> view ->assign('fromData', $paginator);

       $uCount   總筆數
        $limit  每頁筆數
       $page 預設從第幾頁開始
       $paginator 分頁處理後的資料集

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生命週期為兩周
 帶參數的話以秒為單位。