全域函式與常數

本章列出一些使用Cake開發應用程式時常用到的全域函式與常數。

第一節

全域函式

這兒列出的是Cake裡每個地方都可以使用的函式。 其中有很多是為了包裝名字很長的PHP函式而設計(包裝型函式),當你想要短小精幹的函式為你重覆做一些事,那這就是你要的。 還有些(像vendor()和uses())可以用來引用(include)外部程式碼,或執行其他函式。

譯註:接下來會用"包裝型函式"代表Wrapper,此類的函式內容就是把所有的參數轉去呼叫另一個函式, 主要目的是減短函式名稱。

  • config

載入Cake的核心設定檔,如果成功的話就傳回true。

  • uses
  • string $lib1
  • string $lib2...

用來載入Cake的核心函式庫(放在cake/libs/)目錄內)。 用不含副檔名'.php'的函式庫檔名指定。

uses('sanitize', 'security');
  • vendor
  • string $lib1
  • string $lib2...

載入第三方函式庫(放在/vendors目錄內)。 用不含副檔名'.php'的函式庫檔名指定。

vendor('myWebService', 'nusoap');
  • debug
  • mixed $var
  • boolean $showHtml = false

如果應用程式的DEBUG層級不是0,就把$var字串印出。 如果$showHtml是true,URL資料會以流覽器視為字串的格式輸出。

譯註:如果$showHtml是true,'<'為被以'%lt;'取代,'>'會以’%gt;'取代。

  • a

傳回包裝型函式使用的參數陣列。

譯註:原始碼中的註解為:傳回內容存著傳入參數的陣列。例如: a('a', 'b')傳回 array('a', 'b')。

function someFunction()
{
    echo print_r(a('foo', 'bar'));
}

someFunction();

// output:

array(
    [0] => 'foo',
    [1] => 'bar'
)
  • aa

傳回包裝型函式使用的關聯式陣列

譯註:原始碼中的註解為:由傳入的參數建立關聯式陣列。例如:aa('a','b')傳回 array('a'=>'b')。

echo aa('a','b');
// 輸出:
array(
    'a' => 'b'
)
  • e
  • string $text

ehco()函式的包裝型函式。

  • low

strtolower()函式的包裝型函式。

  • up

strtoupper()函式的包裝型函式。

  • r
  • string $search
  • string $replace
  • string $subject

str_replace()函式的包裝型函式。

  • pr
  • mixed $data

便利的函式,功能和下列的程式相同:

echo "<pre>" . print_r($data) . "</pre>";

只有在DEBUG設為非零時才會把資料印出。

  • am
  • array $array1
  • array $array2...

將傳入的所有陣列結合成一個陣列。

  • env
  • string $key

由可用的管道取得環境變數。這個函式是準備在$_SERVER或$_ENV被關閉時使用的。

這函式還會負責在Server不支援時,模擬PHP_SELF和DOCUMENT_ROOT。 事實上,最好都用env()取代$_SERVER或getenv()(特別是如果你想要開放程式給別人用),因為他會自動模擬所有的狀況。

  • cache
  • string $path
  • string $expires
  • string $target = 'cache'

把$data的資料存放在CACHE/$path目錄內作為快取,CACHE預設為/app/tmp/。 $expires裡放的時間字串格式必需是strtotime()能接受的格式。 $target則可以是'cache'或'public'。

譯註:'public'時則暫存在WEB_ROOT/$path/目錄下。

  • clearCache
  • string $search
  • string $path = 'views'
  • string $ext

清除快取目錄內的檔案及子目錄。

若$search是字串,則名稱和他相同的目錄或檔名就會被由快取目錄裡移除。 $search還可以是陣列,將多組字串放在陣列中一次指定,便可一次刪除多個檔案或目錄。 如果$search內容是空的,則/app/tmp/cache/views/ 就會被清空。

$path參數用來指定要刪除的檔案與目錄放在/tmp/cache/裡,那個目錄裡。 預設值是'views',所以預設會去/app/tmp/cache/views/目錄內找檔案刪除。

$ext則用來指定要刪除檔案的副檔名。

  • stripslashes_deep
  • array $array

將陣列內所有元素的斜線('/')去除。

  • countdim
  • array $array

計算$array的維度。看是一維陣列,二維陣列...n維陣列。

  • fileExistsInPath
  • string $file

到include_path所指定的各目錄中找尋$file,如果找到則傳回路徑,找不到則傳回false。

  • convertSlash
  • string $string

把正斜線('/')換成底線('_'),若字串中第一個和最後一個字元是底線,則將它刪除。

第二節

CakePHP核心定義常數

ACL_CLASSNAME:指定目前Cakephp使用中的ACL類別名稱。 這個常數讓使用者用於整合第三方類別。

ACL_FILENAME:ACL_CLASSNAME指定的類別存放的檔名。

譯註:ACL 是Access Control List的縮寫,用於控制存取權限。

AUTO_SESSION:如果設成false,則在發出request時,程式不會自動呼叫session_start()。

CACHE_CHECK:如果設成false,會將整個應用程式中view的快取功能關閉。

CAKE_SECURITY:指定session的安全等級,CAKE_SESSION_TIMEOUT會跟者改變。 此值可以是低:'low',中:'medium',高:'high'。 依不同設定,CAKE_SESSION_TIMEOUT會被乘上一個值:

  1. low: 300

  2. medium: 100

  3. high: 10

CAKE_SESSION_COOKIE:應用程式使用的session cookie名稱。

CAKE_SESSION_SAVE:可以設成'php','file'或'database'。

  1. php:Cake使用PHP預設方式處理session(通常定義在php.ini中)。

  2. file:Session的資料會被存放在/tmp中。

  3. database: 使用Cake的session資料庫管理機制處理(請參考"Cake Session Component"一章)。

CAKE_SESSION_STRING:session管理時使用的亂數字串。

CAKE_SESSION_TABLE:存放session資料的資料表(如果CAKE_SESSION_SAVE被設成'database'時)。 如果預設的資料庫連線有設定資料表名稱前置詞,在此就不要再包含它了。

CAKE_SESSION_TIMEOUT:session過期的時間。這個值會再依CAKE_SECURITY被乘上一個值。

COMPRESS_CSS:如果設成true,CCS風格表將在輸出時被壓縮。 要啟動這個功能,必需讓web伺服器有寫入/var/cache 目錄的權限。 使用時,使用/ccss 風格表(不再是/css),或直接使用Controller::cssTag()。

DEBUG:定義CakePHP應用程式執行時,錯誤訊息回報層級。值由0到3:

  1. 0:產品模式。不輸出位何錯誤訊息和除錯訊息。

  2. 1:開發模式。警告,錯誤與除錯訊息都顯示。

  3. 2:和1一樣,不同的是以SQL指令輸出。

  4. 3:和2一樣,但會把目前物件的內容都下來(通常是controller)。

LOG_ERROR:錯誤常數。用來辨別記錄與除錯訊息。目前PHP支援LOG_DEBUG。

MAX_MD5SIZE: 執行md5()使用的最大資料量(bytes)。

WEBSERVICES: 如果設成true,將啟動Cake內建的webservices功能。

Section 3

CakePHP 路徑常數

APP:應用程式目錄的路徑。

APP_DIR:應用程式目錄的名稱。

APP_PATH:應用程式中app目錄的絕對路徑。

CACHE:快取檔目錄所在路徑。

CAKE:應用程式的cake目錄所在路徑。

COMPONENTS:應用程式的compoents目錄路徑。

CONFIGS:設定檔目錄的路徑。

CONTROLLER_TESTS:controller測試目錄的路徑。

CONTROLLERS:應用程式的controller所在路徑。

CSS:CSS檔目錄的路徑。

ELEMENTS:element目錄的路徑。

HELPER_TESTS:helper測試目錄的路徑。

HELPERS:helper目錄的路徑。

INFLECTIONS:inflactions目錄的路徑(通常在設定目錄裡)。

JS:JavaScript檔存放目錄的路徑。

LAYOUTS:layout存放目錄的路徑。

LIB_TESTS:Cake函式庫測試目錄的路徑。

LIBS:Cake函式庫目錄的路徑。

LOGS:記錄檔存放目錄的路徑。

MODEL_TESTS:model測試目錄的路徑。

MODELS:model目錄的路徑。

SCRIPTS:Cake script目錄的路徑。

TESTS:測試目錄的路徑(model,controller等測試目錄的父目錄)。

TMP:tmp目錄的路徑。

VENDORS:vendors目錄的路徑。

VIEWS:view目錄的路徑。

第四節

CakePHP Webroot 設定路徑

CORE_PATH:Cake核心函式庫路徑。

WWW_ROOT:應用程式的webroot目錄的路徑。

CAKE_CORE_INCLUDE_PATH:Cake核心函式庫路徑。

ROOT:CakePHP最基底的index.php所在的目錄。

WEBROOT_DIR:應用程式的webroot目錄路徑。


附錄:讀者筆記