spl_autoload_register 와 autoload 의 차이 에 대한 상세 한 설명
3085 단어 spl autoload registerautoload
<?php
class A
{
public function __construct()
{
echo 'Got it.';
}
}
그리고 우 리 는 index.php 가 이 클래스 A 를 사용 해 야 합 니 다.일반적인 표기 법 은
<?php
require('A.php');
$a = new A();
입 니 다.그러나 한 가지 문 제 는 우리 의 index.php 가 포함 해 야 하 는 것 이 클래스 A 가 아니 라 여러 가지 종류 가 필요 합 니 다.그러면 반드시 많은 줄 require 문 구 를 써 야 합 니 다.가끔 기분 나 쁠 때 도 있어 요.그러나 php 5 이후 버 전에 서 는 더 이상 이렇게 할 필요 가 없습니다.php 5 에서 정의 되 지 않 은 클래스 를 사용 하려 고 할 때 자동 으로 autoload 함 수 를 호출 합 니 다.따라서 저 희 는 를 작성 할 수 있 습 니 다.autoload 함 수 는 php 가 자동 으로 클래스 를 불 러 올 수 있 도록 합 니 다.긴 파일 목록 을 쓸 필요 가 없습니다.예 를 들 어 위의 예 에서 index.php 는 이렇게 쓸 수 있다.
<?php
function __autoload($class)
{
$file = $class . '.php';
if (is_file($file)) {
require_once($file);
}
}
$a = new A();
물론 위 에 서 는 가장 간단 한 시범 일 뿐이다.autoload 는 include 만 갑 니 다.path 클래스 파일 을 찾 아 불 러 옵 니 다.필요 에 따라 정의 할 수 있 습 니 다autoload 로드 클래스 의 규칙 입 니 다.또한,우리 가 자동 으로 불 러 오고 싶 지 않 을 때 호출autoload 가 아니 라 우리 자신의 함수(또는 클래스 방법)를 호출 합 니 다.우 리 는 spl 을 사용 할 수 있 습 니 다.autoload_register 는 우리 자신의 autoload 함 수 를 등록 합 니 다.그것 의 함수 원형 은 다음 과 같다:bool splautoload_register ( [callback $autoload_function])우 리 는 위 에 있 는 예 를 계속 바 꾸 었 다.
<?php
function loader($class)
{
$file = $class . '.php';
if (is_file($file)) {
require_once($file);
}
}
spl_autoload_register('loader');
$a = new A();
이렇게 해도 정상적으로 작 동 할 수 있다.이때 phop 은 종 류 를 찾 을 때 호출 되 지 않 았 다.autoload 가 아니 라 우리 가 정의 한 함수 loader 를 호출 했 습 니 다.같은 이치 로 아래 의 이런 문법 도 괜찮다.
<?php
class Loader
{
public static function loadClass($class)
{
$file = $class . '.php';
if (is_file($file)) {
require_once($file);
}
}
}
spl_autoload_register(array('Loader', 'loadClass'));
$a = new A();
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Extjs 솔루션 스토어.getUpdatedRecordes()에서 데이터를 가져올 수 없음Extjs3.x에서는 store입니다.getModifiedRecordes(), editgridpanel로 수정된 기록을 얻지만, 아무리 해도 얻지 못한다. 깊이 파고들어야 알 수 있다 store 클래스의 getUpd...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.