제가 진행하고 있는 프로젝트에는 global $app;
같은 문장이 가득해요. global $app;
없이 바로 $app
을 사용할 수 있는 방법이 없을까요?
제가 진행하고 있는 프로젝트에는 global $app;
같은 문장이 가득해요. global $app;
없이 바로 $app
을 사용할 수 있는 방법이 없을까요?
OOP에 관계없이 PHP의 함수 외부 변수는 전역 변수입니다.
함수 내에서 전역 변수를 사용하려면 전역 선언을 사용해야 합니다.
PHP 자체는 전역 선언이 필요 없는 $_SERVER/$_COOKIE 등과 같은 많은 "수퍼" 전역 변수를 제공합니다.
Windows 레지스트리는 PHPer에게 $win = array();
해시 테이블(다차원 다양한 애플리케이션과 모듈의 구성 정보를 저장할 수 있는 전역 범위에 있습니다. PHP 웹 애플리케이션에서는 왜 이러한 애플리케이션 수준의 전역 배열을 제외합니까? 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>
클래스의 정적 메서드의 가장 큰 장점은 인스턴스화 없이 클래스를 직접 사용할 수 있지만, 클래스의 비정적 멤버 변수 및 메서드에 접근할 수 없다는 점입니다.