PHP 클래스 의 자동 로 딩 과 네 임 스페이스 용법 인 스 턴 스 분석
합격 한 프로그래머 로 서 반드시 과정 프로 그래 밍 에서 대상 프로 그래 밍 으로 전환 하 는 과정 이 있 을 것 이다.이 과정 에서 네 임 스페이스,클래스,계승,인터페이스,클래스 자동 로드 등 은 우리 가 파악 해 야 할 것 이다.그 전에 이런 개념 에 대해 잘 알 지 못 했 지만 기초 적 으로 사용 할 수 있 었 다.네 임 스페이스 와 클래스 에 대한 자동 로드 지식 을 체계적으로 기록 합 니 다.
클래스 자동 로드
자동 로드 클래스 는 무엇 입 니까?
? ? 현재 페이지 가 정의 되 지 않 은 클래스 를 호출 할 때 자동 으로 불 러 올 수 있다 는 것 을 말 그대로 알 수 있 습 니 다.
phop 의 마술 방법 을 알 고 있 었 다 면
__autoload
이 마술 방법 이 낯 설 지 않 았 을 것 이 라 고 믿 습 니 다.php 공식 매 뉴 얼 설명:정의 되 지 않 은 클래스 를 불 러 오 려 고 시도 합 니 다.
void __autoload ( string $class )
class 는 불 러 올 클래스 이름 입 니 다.php 공식 매 뉴 얼 에 도 좋 은 예 가 있 습 니 다.여기 서 참조 하 십시오../myClass.php
<?php
//
class myClass {
public function __construct() {
echo "myClass init'ed successfuly!!!";
}
}
?>
./index.php
<?php
//
function __autoload($classname) {
$filename = "./". $classname .".php";
include_once($filename);
}
//
$obj = new myClass();
?>
"이 줄 에서 우리 의".../my Class.php"가 포 함 됩 니 다.이 신기 한 효 과 는 바로 우리 가 원 하 는 것 입 니 다.당신 은"my Class init'ed successful!!"결 과 를 되돌리다.따라서"my Class"와 유사 한 클래스 를 호출 하면 파일 에"my Class.php"가 포 함 됩 니 다.전 제 는 이 파일 이 존재 하지 않 으 면 인용 오류 가 발생 합 니 다."Foo"를 호출 하면"Foo.php"가 인 용 됩 니 다.이와 같은...
네가 있어 도 아래 처럼 쓸 필요 가 없어."
<?php
include_once("./myClass.php");
include_once("./myFoo.php");
include_once("./myBar.php");
$obj = new myClass();
$foo = new Foo();
$bar = new Bar();
?>
이 마술 방법 은 확실히 매 직 하 다 고 하지만 그 는 한 번 만 사용 할 수 있다 는 단점 이 있다.여러 개의autoload
함수 가 필요 할 때 안 되 기 때문에 공식 적 으로 추천 하지 않 고 후속 버 전에 서 는 제 거 될 수 있다.이 동시에 정부 에서 도 대체 할 수 있 는 함수spl_autoload_register
를 제시 하여 함 수 를SPL __autoload
함수 대열 에 등록 했다.이 대기 열 에 있 는 함수 가 활성화 되 지 않 았 다 면 활성화 합 니 다.bool spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] )
직접 예 를 들 어 설명 하 세 요.여기 서 네 임 스페이스 와 함께 말씀 드 리 겠 습 니 다.
\#새 프로젝트 test
//먼저 응용 디 렉 터 리 app 을 새로 만 든 다음 디 렉 터 리 에 Test 폴 더 를 새로 만 들 고 폴 더 아래 에 두 가지 종 류 를 새로 만 듭 니 다.
test/app/Test/Beta.php
<?php
namespace app\Test;
class Beta {
public function index() {
echo "app\Test\Beta\index";
}
}
test/app/Test/Test.php
<?php
namespace app\Test;
class Test {
public function index() {
echo "app\Test\Test\index";
}
}
//새 자동 로드 클래스test/app/autoload/Loading.php
<?php
namespace app\autoload
class Loading {
public static function autoLoad() {
// \ / , Linux 。Windows
$fileName = str_replace('\\', '/', DIR . '\\'. $className) . '.php';
if (is_file($fileName)) {
require_once $fileName;
} else {
echo $fileName . ' is not exist'; die;
}
}
}
//새 응용 입구 파일test/index.php
define('DIR', dirname(__FILE__));// /.../test
//
require DIR . "/autoload/Loading.php";
//
//
spl_autoload_register("\\autoload\\Loading::autoLoad");
// ,
$beta = new app\Test\Beta();
$beta->index();// app\Test\Beta\index
echo "\r
";
$test = new app\Test\Test();
$test->index(); // app\Test\Test\index
네 임 스페이스여기 서 보면 네 임 스페이스 에 대해 대충 알 고 있 을 거 라 고 믿 습 니 다.적어도 어떻게 사용 하 는 지 는 알 고 있 습 니 다.
무엇이 네 임 스페이스 입 니까?
넓 은 의미 에서 볼 때 네 임 스페이스 는 사물 을 포장 하 는 방법 이다.많은 곳 에서 이런 추상 적 인 개념 을 볼 수 있다.예 를 들 어 운영 체제 에서 디 렉 터 리 는 관련 파일 을 그룹 으로 나 누 는 데 사용 되 며 디 렉 터 리 에 있 는 파일 에 있어 서 네 임 스페이스 역할 을 합 니 다.구체 적 으로 예 를 들 어 파일 foo.txt 는 디 렉 터 리/home/greg 와/home/other 에 동시에 존재 할 수 있 지만 같은 디 렉 터 리 에 두 개의 foo.txt 파일 이 존재 할 수 없습니다.또한 디 렉 터 리/home/greg 외 에 foo.txt 파일 에 접근 할 때 디 렉 터 리 이름과 디 렉 터 리 구분 자 를 파일 이름 앞 에 두 고/home/greg/foo.txt 를 받 아야 합 니 다.이 원 리 를 프로 그래 밍 분야 에 응용 하 는 것 이 바로 네 임 스페이스 의 개념 이다.
그래서 너 는 그 를 폴 더 라 고 이해 할 수 있다.
더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.