Home >Backend Development >PHP Tutorial >PHP detailed explanation of examples of use, namespace, imported class files and automatically loaded classes
use just uses the namespace ,
but if you want to call the class, you must load the class file, or load it automatically .
Even if one of the classes is introduced, if there is no automatic loading mechanism, an error will still be reported
Several usages of use
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();
1. The first introduction method (provided there is automatic loading Mechanism)
use OSS\OssClient; // 表示引入Class 'OSS\OssClient'
When used,
$ossClient = new OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint, false);
or this
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false);
can be used!
2. The second introduction method (provided there is an automatic loading mechanism)
import('@.ORG.OSS.OssClient'); // thinkphp中的加载机制
When used, there can only be an automatic loading namespace in
$ossClient = new OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint, false); // 其中OSS是命名空间
thinkphp Mechanism,
The namespace in the Liberal directory of the framework can be automatically identified and located, as follows
Library FrameworkClass LibraryDirectory
│├─Think Core Think Class library package directory
│ ├─Org Org class library package directory
│ ├─... More class library directory
So, if there is a namespace, you don’t need to import the file.
But for a class without a namespace, if the file is not introduced, an error will be reported.
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(); ?>After running index.php, hello world is output normally. In index.php, since printit.class.php is not included, when instantiating printit, the autoload function is automatically called. The value of the parameter $class is the class name printit. At this time, printit.class.php is introduced. 4.spl_autoload_register
Look at spl_autoload_register() again. This function has the same effect as autoload. Let’s look at a simple example:
<? function loadprint( $class ) { $file = $class . '.class.php'; if (is_file($file)) { require_once($file); } } spl_autoload_register( 'loadprint' ); $obj = new PRINTIT(); $obj->doPrint(); ?>Replace autoload with the loadprint function. But loadprint will not be triggered automatically like autoload. At this time, spl_autoload_register() will work. It tells PHP to execute loadprint() when it encounters an undefined class. spl_autoload_register() calls
staticmethod ,
<? class test { public static function loadprint( $class ) { $file = $class . '.class.php'; if (is_file($file)) { require_once($file); } } } spl_autoload_register( array('test','loadprint') ); //另一种写法:spl_autoload_register( "test::loadprint" ); $obj = new PRINTIT(); $obj->doPrint(); ?>
The above is the detailed content of PHP detailed explanation of examples of use, namespace, imported class files and automatically loaded classes. For more information, please follow other related articles on the PHP Chinese website!