自己在做的專案裡充滿了global $app;
這樣的語句,有辦法不global $app;
直接使用$app
嗎?
自己在做的專案裡充滿了global $app;
這樣的語句,有辦法不global $app;
直接使用$app
嗎?
不考慮OOP,在PHP裡函數外的變數都是全域變數.
函數內要使用全域變數,就需要用global宣告,當然你也可以考慮傳參.
PHP本身就有提供了很多"超"全域變數諸如$_SERVER/$_COOKIE等,不需要global聲明.
Windows註冊表在PHPer看來就是一個$win = array();
全域作用域下的雜湊表(多維數組),可以儲存各種應用和模組的設定資訊.PHP Web應用為什麼要排斥這麼一個應用級全域數組呢?像Discuz!裡就有這麼一個名為$_G[]的全域數組.
當然了,有些人不OOP不舒服斯基,就是不喜歡全域數組,也行:
<code><?php class App { private static $options = array( 'db_host' => '127.0.0.1', 'db_user' => 'yaber', 'db_pass' => '123456', 'db_name' => 'yabase', 'db_port' => 3306 ); public static function config($key = '') { return ($key == '') ? self::$options : self::$options[$key]; } } function bar() { echo App::config('db_name'); } bar(); //输出 yabase</code>
類別的靜態方法最大的好處就是類別不經過實例化就可以直接實用,但它不能存取類別的非靜態成員變數和方法.