Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:看作业时间 , 你是全职在学习吧, 辛苦
<?php
// OOP基本步骤
// 1. 创建类
class demo1
{
// 2.添加类成员
//创建属性
public $site='php中文网';
//创建方法
public function getSite()
{
// 类的实例化
$obj=new demo1();
//返回类属性
return $obj->site.'欢迎你';
}
}
//3.访问类成员
$obj=new demo1();
//访问属性:对象成员访问符:->
echo $obj->site.'<br>';
echo $obj->getSite();
echo '<h1>demo2.php</h1>';
echo '<hr>';
//1创建类
class demo2
{
// 2.添加类成员
public $site='php中文网';
public $role='讲师';
// 创建方法
public function getSite()
{
// 类的实例化
$obj1=new self;
//返回类的属性
return $this->site.'欢迎你';
}
public function getRole()
{
// 类的实例化
$obj1=new self;
// 返回属性
//$this是当前类的实例引用它与当前类的实例绑定
return $this->role;
}
}
//3.访问类成员
$obj1=new demo2();
//访问属性:对象成员访问符:->
echo $obj1->site.'<br>';
echo $obj1->getRole().'<br>';
echo '<h1>demo3.php</h1>';
echo '<hr>';
//1创建类
class demo3
{
// 2添成类成员
public $site3;
public $role3;
public function getInfo()
{
return'我是:'.$this->site3.$this->role3;
}
//构造方法
public function __construct($site3,$role3)
{
// 初始化类成员
$this->site3=$site3;
$this->role3=$role3;
// 创建类实例
//$obj3=new self;
////3.添加类实例成员
// $obj3->site3=$this->site3;
// $obj3->role3=$role3;
//// 返回实例
// return $obj3;
}
}
//3访问类成员
$obj3=new demo3('php中文网',lectrue);
echo $obj3->getInfo('php中文网',lectrue);
echo '<h1>demo4.php</h1>';
echo '<hr>';
//1.创建类
class demo4
{
// 2.添成类成员
public $site4;
// 如果不想让该属性在类的外部被访问,可以将该属性的访问控制符修改为:private 私有成员, protected 受保护成员
private $name='peter zhu';
protected $role4;
public function getInfo()
{
return '我是:'.$this->site4.$this->role4;
}
//构造方法
public function __construct($site4,$role4)
{
$this->site4=$site4;
$this->role4=$role4;
}
public function getRole()
{
// 仅允许用户名是'admin'的用户访问,其它访问返回: 无权访问
$username=$_GET['username'] ??'';
if(isset($username)&& $username==='admin' )
{
return $this->role4;
}else{
return '无权访问';
}
}
public function getName()
{
return isset($this->name)?$this->name:'不存在该属性';
}
// 魔术方法: __get($name), 属性重载
// public function __get($name)
// {
// // 仅允许用户名是'admin'的用户访问,其它访问返回: 无权访问
// $username=$_GET['username']??'';
// if (isset($user)&&$username==='admin'){
// return isset($this->name)?$this->name:'属性没有定义;'
// }else{
// return '无权';
// }
// }
}
//3.访问类成员
$obj4=new demo4('wwww.php.cn','讲师');
//echo $obj4->role4;
echo $obj4->getRole();
echo $obj4->getName();
echo '<h1>demo5.php</h1>';
echo '<hr>';
// 类的继承
//1.创建类
class demo5
{
// 2.添加类成员
public $site5;
protected $role5;
public function getInfo()
{
return'我是:'.$this->site5.$this->role5;
}
// 构造方法
public function __construct($site5,$role5)
{
$this->site5=$site5;
$this->role5=$role5;
}
}
//子类
class demo5_1 extends demo5
{
// 当前子类的自身属性
private $course;
public function __construct($site5, $role5,$course)
{
// parent:: 调用 父类中的成员
parent::__construct($site5, $role5);
$this->course=$course;
}
// 重写父类中的方法
public function getInfo()
{
return parent::getInfo().'负责的课程是:'.$this->course;
}
}
//3.访问类成员
$sub=new demo5_1('php.cn', '朱老师', 'php');
echo $sub->getInfo();
echo '<h1>demo6.php</h1>';
echo '<hr>';
//trait的使用
trait Test
{
public function getInfo()
{
return'我是:'.$this->site6.'讲师'.$this->role6;
}
}
//1.创建类宿主类
class demo6
{
//导入trait类库
use Test;
//2.添成类成员
public $site6;
protected $role6;
public function getInfo()
{
return'我是:'.$this->site6.'讲师'.$this->role6;
}
//构造方法
public function __construct($site6,$role6)
{
$this->role6=$role6;
$this->site6=$site6;
}
}
// trait : 还可以用在类的继承上下文环境中
class demo6_1 extends demo6
{
// 当前子类的属性
private $course;
public function __construct($site6, $role6, $course)
{
parent::__construct($site6, $role6);
$this->course=$course;
}
// 重写父类中的方法
public function getInfo()
{
return parent::getInfo() . ', 负责的课程是: ' . $this->course;
}
}
// 优先级: 当前类中的同名方法 > trait类中的同名方法 > 父类中的同名方法
//3.访问类成员
$obj = new Demo6('php中文网', 'Peter Zhu');
echo $obj->getInfo();
echo '<hr>';
$sub = new Demo6_1('php.cn', '朱老师', 'php');
echo $sub->getInfo();
echo '<h1>demo7.php</h1>';
echo '<hr>';
//接口
interface iDemo
{
// 接口方法
public function getInfo();
public function hello();
}
//1.创建类
class Demo7 implements iDemo
{
// 2.添加类成员
public $site7;
protected $role7;
public function getInfo()
{
return'我是:'.$this->site7.'讲师'.$this->role7;
}
public function hello()
{
return 'Hello 大家晚上好?';
}
// 构造方法
public function __construct($site, $role)
{
$this->site = $site;
$this->role = $role;
}
}
// 3. 访问类成员
$obj = new Demo7('php中文网', '猪老师');
echo $obj->getInfo() . '<br>';
echo $obj->hello() . '<br>';
echo '<h1>demo8.php</h1>';
echo '<hr>';
// 抽象类
//创建抽象类
abstract class cx
{
// 抽象方法
abstract public function getInfo();
// 已实现方法
public function hello()
{
return'hello大家晚上好';
}
}
//1.创建类
class demo8 extends cx
{
// 2.添加类成员
public $site8;
protected $role8;
public function getInfo()
{
return '我是: ' . $this->site . '讲师: ' . $this->role;
}
// 构造方法
public function __construct($site, $role)
{
$this->site8 = $site;
$this->role8 = $role;
}
}
// 3. 访问类成员
$obj = new Demo8('php中文网', '猪哥');
echo $obj->getInfo() . '<br>';
echo $obj->hello() . '<br>';