PHP에서 특정 클래스를 전역 범위로 확장할 수 있나요?

WBOY
풀어 주다: 2016-09-14 09:41:26
원래의
1158명이 탐색했습니다.

제가 진행하고 있는 프로젝트에는 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>
로그인 후 복사

클래스의 정적 메서드의 가장 큰 장점은 인스턴스화 없이 클래스를 직접 사용할 수 있지만, 클래스의 비정적 멤버 변수 및 메서드에 접근할 수 없다는 점입니다.

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿