Tag Archives: PHP

PHP 程式開發的 Log framework

log4j 幾乎已經是 java 專案開發的標準配備了,在 pear 網站搜尋了一下,找到了一個 logging 的套件,安裝容易,整合也非常方便。

安裝部份:

Fedora 8 只要 ‘yum install php-pear-Log’ 就會自動安裝好所需的套件,Windows 或其他平台如果已經安裝好 PHP、PEAR 套件,應該只要 ‘pear install Log’ 就會自動下載並安裝好套件,windows 的 xampp 是這樣安裝好的。

Coding:

以下是一小段簡短的範例

<?php

require_once ‘Log.php’;

$logger=&Log::factory(‘file’,’myap.log’,’demo.php’);
$logger->log(‘application start’,PEAR_LOG_NOTICE);
$logger->log(‘application finished’,PEAR_LOG_NOTICE);

?>

寫進 myap.log 檔的 log 格式如下

Dec 26 01:11:22 demo.php [notice] application start
Dec 26 01:11:22 demo.php [notice] application finished

支援的 log level 包括

PEAR_LOG_EMERG

PEAR_LOG_ALERT

PEAR_LOG_CRIT

PEAR_LOG_ERR

PEAR_LOG_WARNING

PEAR_LOG_NOTICE

PEAR_LOG_INFO

PEAR_LOG_DEBUG

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Warning: Cannot modify header information – headers already sent by

寫 php 時常遇到這個錯誤訊息,解法也很簡單,如果 php 有 include 其他程式檔的話檢查 <?php 的前面不可以有任何的空行或文字,?> 後面也不要有空行和其他文字就可以了。

2007/12/25 加註:

有些 editor 在處理 utf-8 編碼文件檔時,會在檔案最前面加上幾個 byte 的檔頭,一般編輯時看不到,利用 UltraEditor、NotePad++ 的 Hex mode 可以看到及修改,這種檔案也會造成上述的錯誤,也有看過這種 jsp 檔案 java 無法 compile 的情形。

1 Star2 Stars3 Stars4 Stars5 Stars (5 votes, average: 4.60 out of 5)
Loading...

Propel Object-Relational Mapping (ORM) 解決方案

Java 平台整合 Hibernate 這個 ORM 套件進行開發相當的普遍,現在 PHP 也有 Propel 和其他類似的套件,由於 Propel 已經整合到 symfony 這個 PHP framework,相信技術和穩定方面都達到了一 定程度,最近試著整合的確是有一定的困難度,整理的心得如下:

一 、安裝

在 Fedora 7 上需要以下幾個套件

  1. php-5.2.4
  2. php-pear-1.5.0
  3. php-xml-5.2.4
  4. php-pear-log
  5. php-mysql-5.2.4 (看使用什麼資料安裝對應的套件)

上面的套件並不包含 Propel,不過 PHP 的套件管理的確已經相當成熟,安裝 Propel 相當方便,這裡介紹利用 Pear 安裝的程序:

首先安裝 phing 這個必需的套件

pear channel-discover pear.phing.info
pear install phing/phing

接著以下3個指令就可以裝好 Propel

pear channel-discover pear.phpdb.org
pear install phpdb/propel_generator
pear install phpdb/propel_runtime

請注意指令順序,在安裝過程中 pear 會自動安裝其他所需要的套件.

既然是 ORM 一定會有後端資料庫整合,如果用的是MySQL 請檢查 php5-mysql 套件是否已安裝

二 、應用

Propel 在自動產生 PHP ORM class 時必需有資料庫 schema 檔案,可以參考官方網站的文件來撰寫,檔案完成後 Propel 可以依據 schema 檔案自動建立相關 table,這裡介紹另一個比較常用的模式,資料庫 table 建好後,自動產生 schema 檔案。

先建立 build.properties,mysql 範例如下

propel.project = <project name>
propel.database = mysql
propel.database.url = mysql://<db user>:<db password>@<db host>/<database>

接下來用以下指令就可以自動依據 table 產生 schema.xml

phing -f /usr/share/pear/data/propel_generator/pear-build.xml -Dproject.dir=. creole

* 重點是 pear-build.xml 定義了建立 propel 相關檔案的資料,不同的 distribution 可能在不同位置

有了 build.properties、schema.xml 後請依照官方網站的說明建立 runtime-conf.xml,有了這3個檔案,以下指令就可以自動建立 php 的 class

phing -f /usr/share/pear/data/propel_generator/pear-build.xml -Dproject.dir=.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...