首頁 >後端開發 >php教程 >php中可以讓某類擴展到全域嗎?

php中可以讓某類擴展到全域嗎?

WBOY
WBOY原創
2016-09-14 09:41:261188瀏覽

自己在做的專案裡充滿了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>

類別的靜態方法最大的好處就是類別不經過實例化就可以直接實用,但它不能存取類別的非靜態成員變數和方法.

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn