一、类的组成部分:
1.类有关键字:class
2.类的名字:通常首字母大写
3.类的扩展关键字:extends
4.类的主体有大括号包括{}
二、类通常包含属性和方法
1.类的属性和方法的修饰符:
- 访问修饰符:
- public:公开的,谁都可以直接访问
- private:私有的,仅类内的方法可以访问(字类无法直接访问)
- protected:受保护的,仅类本身和子类可以直接访问
- 静态修饰符
- static:通常在属性名(方法函数function)之前,在访问修饰符之后(在方法中使用时,用于延时绑定)
三、类中查常见的关键字
- $this:类的实列对象
- self:类的本身
- parent:通常指向父类
- static:通常延时访问,当前运行方法的类
::
访问范围符,通常跟self|parent|static使用
四、类中常见的修饰符
1.final:在类名前声明final
关键字,当前类则无法被继承,如果类中方法声明了关键字final
关键字,当前方法则无法被子类修改
2.abstract:在类名前声明关键字abstract
,当前类则为抽象类,抽象类必有抽象方法(抽象方法没有函数体);
五、Trait方法集
1.Trait方法集的组成:方法集属于伪类的一种,不能实列化
- 关键字
Trait
+方法集名字建议由小写t开头首字母大写例如tUser
- 方法集主体,由大括号包括,里面由属性和方法组成
- 在类中通过关键字
use
关键字来使用,可以多个方法集组合使用,用逗号分开:其中方法集和父类以及字类的优先级:子类>方法集>父类; - 如果方法集中的方法与类中或者其他方法集的命名冲突时,可以通过
insteadof
(指定使用哪个方法集中的方法替代重名的方法)和as
(重名的方法可以起别名,使用)来进行解决类如:
use tT1,tT2{
tT1::show insteadof tT2;
tT2::show as sh;
}
六、实战练习
1代码
<?php
include "autoload.php";
echo "测试OK";
class UseName
{
public $name="ldy";
private $age=35;
protected $sex="男";
private static $id=1;
public function __construct(){
}
public function show():string
{
return $this->name.__FUNCTION__.__METHOD__.__CLASS__;
}
// self的作用
public function string():string
{
return self::$id.$this->name;
}
//static延迟绑定
public function tostring():string
{
return static::$id;
}
}
Trait tT1
{
function show():string
{
return __METHOD__;
}
function put():string
{
return __METHOD__;
}
}
Trait tT2
{
function show():string
{
return __METHOD__;
}
}
class Demo extends UseName
{
use tT1,tT2{
tT1::show insteadOf tT2;
tT2::show as sh;
}
public static $id=2;
}
$usr=new UseName();
$user=new Demo();
echo $usr->show();
echo $usr->string();
echo $usr->tostring();
echo "<hr>";
echo $user->string();
echo $user->tostring();
echo $user->show();
echo "<hr>";
echo "<h3>方法集中方法名冲突</h3><br>";
echo $user->show()."<br>";
echo $user->sh()."<br>";
echo "<hr>";
echo "__FILE__的返回内容:".__FILE__."<br>";//返回当前文件的具体路径位置(包含文件名字)
echo "__DIR__的返回内容:".__DIR__."<br>";//返回当文件的的文件路径(不包含文件名)
echo "__NAMESPACE__的返回内容:".__NAMESPACE__."<br>";
echo "dirname()的返回内容:".dirname(__FILE__);//函数返回路径中的目录名称部分。作用等同于__DIR__;
echo "<hr>";
$user_one=new Login();
echo $user_one->input();
2.运行结果