批改状态:合格
老师批语:命名空间就是目录,php 脚本就是目录中的文件
// 声明命名空间: namespace
//namespace test1;
//class demo1{}
//
//namespace test2;
//class demo1{}
// 空间: 命名空间, 匿名空间(全局空间)
namespace demo1{
class Test{
public function hello(){
echo 'demo1--Test--'.__METHOD__;
}
}
}
namespace demo2{
class Test{
public function hello(){
// __METHOD__ 返回类的方法名
echo 'demo2--Test--'.__METHOD__;
}
}
$demo2=new Test();
$demo2->hello();
echo '<br>';
$demo1=new \demo1\Test();//实例化另一个空间的类
$demo1->hello();
echo '<hr>';
}
namespace demo3{
class Test{}
// ::class, 可以获取到当前类完整的类名称
// 完整的类名称, 包括类名和它所在的命名空间的名称
echo Test::class;
echo '<br>';
}
//demo1, demo2, demo3, 是命名空间
// 匿名空间
namespace
{
class Test{
public function hello(){
echo '匿名空间--Test--'.__METHOD__;
}
}
$obj=new Test();
$obj->hello();
}点击 "运行实例" 按钮查看在线实例
<?php
namespace _8425;
// 面向对象的三大特征: 继承, 封装, 多态
// Demo0做为父类, 基类, 超类
class Demo0
{
//属性
public $username;
public $email;
// 构造方法, __construct(),魔术方法, 不需要用户主动调用, 而是由系统根据条件自动触发
// 构造方法主要用于类实例的初始化
public function __construct($username='请填写用户名',$email='请填写邮箱')
{
$this->username=$username;
$this->email=$email;
}
//方法
public function getInfo(){
return '用户名:'.$this->username.' , 邮箱:'.$this->email.'<br>';
}
}
// 子类Sub1, 代码复用
class Sub1 extends Demo0
{
}
$sub1_obj1=new Sub1();
echo $sub1_obj1->getInfo();
$sub1_obj2=new Sub1('admin','admin@yahu***');
echo $sub1_obj2->getInfo();
echo '<hr>';
// 子类Sub2, 来扩展父类, 就是增加属性或方法
class Sub2 extends Demo0
{
// 扩展1: 添加了一个自定义属性
public $age;
// 子类的构造方法
public function __construct($age,$username = '请填写用户名', $email = '请填写邮箱')
{
// parent: 代表着当前类的父类
parent::__construct($username, $email);
// 自定义属性的初始化
$this->age=$age;
}
// 扩展2: 添加一个方法
public function getAge()
{
return '年龄:'.$this->age.'<br>';
}
}
// 实例化子类
$sub2_obj1=new Sub2(26,'sina','sina@yaho***');
echo $sub2_obj1->getInfo();
echo $sub2_obj1->getAge();
echo '<hr>';
class Sub3 extends Sub2
{
// 将父类Sub2中的getAge()方法进行重写, 重写也是扩展的一种
public function getAge()
{
$res= parent::getAge();
switch (true){
case($this->age<18):
$str='我还年轻可以慢慢来。。。';
break;
case ($this->age>=18&&$this->age<60):
$str='成年了,要做个有担当的人...';
break;
default:
$str='一转眼,我们都老了...';
}
return $res.' ---- '.$str.'<br>';
}
}
$sub3_obj1=new Sub3(15,'小妞','php@php.cn');
echo $sub3_obj1->getAge();
$sub3_obj1=new Sub3(25,'小钮','php@php.cn');
echo $sub3_obj1->getAge();
$sub3_obj1=new Sub3(55,'小牛','php@php.cn');
echo $sub3_obj1->getAge();点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号