사용하려면 네임스페이스만 사용하세요.
하지만 클래스를 호출하려면 클래스 파일을 로드하거나 자동으로 로드해야 합니다.
클래스 중 하나가 도입되더라도 자동 로딩 메커니즘이 없으면 여전히 오류가 보고됩니다. . 첫 번째 소개 방법(자동 로딩 메커니즘이 있는 경우)
namespace Blog\Article; class Comment { } //创建一个BBS空间(我有打算开个论坛) namespace BBS; //导入一个命名空间 use Blog\Article; //导入命名空间后可使用限定名称调用元素 $article_comment = new Article\Comment(); //为命名空间使用别名 use Blog\Article as Arte; //使用别名代替空间名 $article_comment = new Arte\Comment(); //导入一个类 use Blog\Article\Comment; //导入类后可使用非限定名称调用元素 $article_comment = new Comment(); //为类使用别名 use Blog\Article\Comment as Comt; //使用别名代替空间名 $article_comment = new Comt();
사용하면
use OSS\OssClient; // 表示引入Class 'OSS\OssClient'또는 이
$ossClient = new OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint, false);가 작동합니다!
2. 두 번째 도입 방법(자동 로딩 메커니즘이 있는 경우)
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false);
사용할 때
import('@.ORG.OSS.OssClient'); // thinkphp中的加载机制php에는 네임스페이스를 자동으로 로드하는 메커니즘이 있다고 생각할 수 있습니다. 프레임워크에는 네임스페이스가 있습니다. Liberary 디렉터리 다음과 같이 모두 자동으로 식별하고 찾을 수 있습니다.Library Framework
Class library
Directory│ ├─Think core Think 클래스 라이브러리 패키지 디렉터리
│ ├─Org Org 클래스 라이브러리 패키지 디렉터리│ ├─... 더 보기 클래스 라이브러리 디렉토리
따라서 네임스페이스가 있으면 파일을 가져올 필요가 없습니다.
하지만 네임스페이스가 없는 클래스의 경우 파일을 가져오지 않으면 오류가 발생합니다.3. autoload
이것은 PHP5에서 정의되지 않은 클래스를 인스턴스화할 때 자동으로 로드되는 기능입니다. 다음 예를 보세요.$ossClient = new OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint, false); // 其中OSS是命名空间index.php를 실행하면 hello world가 정상적으로 출력됩니다. index.php에는 printit.class.php가 포함되어 있지 않기 때문에 printit을 인스턴스화할 때 자동으로 autoload 함수가 호출된다. $class 매개변수의 값은 클래스 이름인 printit이다.
4.spl_autoload_register
spl_autoload_register()를 다시 살펴보세요. 이 함수는 autoload와 동일한 효과를 갖습니다. 간단한 예를 살펴보겠습니다.
printit.class.php <?php class PRINTIT { function doPrint() { echo 'hello world'; } } ?> index.php <? function autoload( $class ) { $file = $class . '.class.php'; if ( is_file($file) ) { require_once($file); } } $obj = new PRINTIT(); $obj->doPrint(); ?>autoload를 loadprint 함수로 바꿉니다. 그러나 loadprint는 자동 로드처럼 자동으로 실행되지 않습니다. 이때 spl_autoload_register()는 정의되지 않은 클래스를 발견하면 PHP에 loadprint()를 실행하도록 지시합니다.
spl_autoload_register()는
static메서드를 호출합니다.
<? function loadprint( $class ) { $file = $class . '.class.php'; if (is_file($file)) { require_once($file); } } spl_autoload_register( 'loadprint' ); $obj = new PRINTIT(); $obj->doPrint(); ?>
위 내용은 사용 예, 네임스페이스, 가져온 클래스 파일 및 자동으로 로드된 클래스에 대한 PHP 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!