Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:
1.类有关键字:class
2.类的名字:通常首字母大写
3.类的扩展关键字:extends
4.类的主体有大括号包括{}
1.类的属性和方法的修饰符:
::
访问范围符,通常跟self|parent|static使用1.final:在类名前声明final
关键字,当前类则无法被继承,如果类中方法声明了关键字final
关键字,当前方法则无法被子类修改
2.abstract:在类名前声明关键字abstract
,当前类则为抽象类,抽象类必有抽象方法(抽象方法没有函数体);
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.运行结果