PHP 클래스 의 자동 로 딩 과 네 임 스페이스 용법 인 스 턴 스 분석

이 사례 는 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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기