版权声明:本文为博主原创文章,仅供学习交流,未经博主允许不得转载。 https://blog.csdn.net/zjy_android_blog/article/details/83279119
一、类常量的创建与访问:注意与静态属性的区别与联系
类常量的访问方式:类名::类常量名;静态变量的访问方式也是:类名::类常量名。
<?php
class Demo
{
// 类常量就是它的值在类中始终不变的量
// 类常量是用const关键字创建,不加$符号,必须初始化
const lang = 'PHP Hello World!';
// 类常量从php5.3+开始支持nowdoc语法
const website = <<<'job'
<a href="">www.php.cn</a>
job;
public function getSiteName(){
echo $this::lang.'<br> ';
// 在类的方法中访问类常量: self::类常量名
return self::lang;
}
}
// 方法1: 类名::类常量名
echo Demo::website; // www.php.cn
echo '<br>';
// 方法2: 类变量::类常量名 php5.3+
$className = 'Demo';
echo $className::website; // www.php.cn
echo '<br>';
// 方法3: 用类的对象访问类常量
echo (new Demo)::website; // www.php.cn
// 方法4: 用类中的方法间接访问类常量
echo (new Demo)->getSiteName();
// PHP Hello World!
// PHP Hello World!
?>
二、类的自动加载技术:__autoload()和spl_autoload_register()
// Demo.php
<?php
class Demo
{
public $name;
// 构造方法,实例化类的时候,自动调用,通常用来初始化对象
public function __construct($name='欢迎来到PHP世界'){
$this->name = $name;
}
}
?>
// aotoLoader.php
<?php
// 1. 用require,include导入一个类文件
// require('Demo.php'); // 导入autoLoader0.php
// include('Demo.php'); // 导入autoLoader0.php
// echo (new Demo)->name; // 欢迎来到PHP世界
// 2. __autoload — 尝试加载未定义的类
// 当我们引入一个不存在的类时,自动调用它导入该类文件
// 注意:使用这种方式导入类文件,需要文件名与类名相同,例如类名是Demo,文件名也要是Demo,否则就会加载类失败
// function __autoload($className){
// $path = realpath(__DIR__).'/'.$className.'.php';
// if(file_exists($path)){
// require_once($path);
// }else{
// echo $path.'不存在';
// }
// }
// echo (new Demo('我正在学习PHP'))->name; // 我正在学习PHP
// echo '<hr>';
// 3. 自定义导入函数,用spl_autoload_register()将自定义的类导入函数添加到函数栈中
// function loader($className){
// $path = realpath(__DIR__).'/'.$className.'.php';
// if(file_exists($path)){
// require_once($path);
// }else{
// echo $path.'不存在';
// }
// }
// spl_autoload_register('loader');
// echo (new Demo('学习使我快乐'))->name; // 学习使我快乐
// echo '<hr>';
// 可以调用类中的函数
class LoaderClass
{
public static function loader($className){
$path = realpath(__DIR__).'/'.$className.'.php';
if(file_exists($path)){
require_once($path);
}else{
echo $path.'不存在';
}
}
}
spl_autoload_register(['LoaderClass','loader']);
echo (new Demo('学海无涯'))->name; // 学海无涯
echo '<hr>';
?>