类的扩展、抽象和接口实例代码
<?php
namespace _0815;
// 父级类
class Ab
{
protected $name;
public function __construct($name)
{
$this->name = $name;
}
protected function getInfo(): string
{
return $this->name;
}
}
// 继承父级类
class Cd extends Ab
{
private $sex;
private $nation;
public function __construct($name, $sex, $nation)
{
parent::__construct($name);
$this->sex = $sex;
$this->nation = $nation;
}
public function getInfo(): string
{
return '姓名:' . parent::getInfo() . '---->性别:' . $this->sex . '---->国籍: ' . $this->nation . '<br>';
}
}
$cd = new Cd('早晨', '男', '中国');
echo '-----------------继承类-----------------------------------<br>';
echo $cd->getInfo() . '<br>';
// 抽象类
abstract class User1
{
public $name = '小明同学';
abstract public static function getInfo($name);
}
class User2 extends User1
{
public static function getInfo($name)
{
return 'Hello, ' . $name;
}
}
echo '-----------------抽象类-----------------------------------<br>';
echo User2::getInfo('早上好') . '<br>';
// 接口类
interface iWeixin
{
public function WeixinName();
}
// 继承接口
class Weixin implements iWeixin
{
public $wx_name = '微信API';
public function WeixinName()
{
return '接口名称:' . $this->wx_name;
}
}
echo '-----------------接口类-----------------------------------<br>';
$api_weixin = new Weixin();
echo $api_weixin->WeixinName();
运行效果
全局成员有三种:类、函数、常量,特点是不能重复声明。
namespace即“命名空间”,也称“名称空间” 、”名字空间”。如果两个人写的库文件中出现同名的变量或函数(不可避免),使用起来就有问题了。为了解决这个问题,引入了名字空间这个概念。
命名空间:实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。
命名空间的作用:是建立一些互相分隔的作用域,把一些全局实体分隔开来。命名空间的作用类似于操作系统中的目录和文件的关系,由于文件很多,不便管理,而且容易重名,于是人们设立若干子目录,把文件分别放到不同的子目录中,不同子目录中的文件可以同名。调用文件时应指出文件路径。
跨空间成员访问方式实例代码
<?php
// 跨空间成员访问方式实例
namespace one;
class Username1
{
public static $name = '早晨';
}
echo Username1::class . '<br>';
echo \two\Username1::$name . '<hr>';
namespace two;
class Username1
{
public static string $name = '我叫早晨';
}
echo Username1::class . '<br>';
echo \one\Username1::$name . '<hr>';