Correcting teacher:PHPz
Correction status:qualified
Teacher's comments:
[toc] //md 内容表
类的自动加载器:新建一个 autoload.php
spl_autoload_register(function($className){
// 先查看要加载的类
printf('类名:%s<br>',$className);
// 将类命名空间与类所在的路径进行一一映射
// linux / window \
// 解决在linux系统中命名空间失效的问题
$file = __DIR__.'\\controller\\'.str_replace('\\',DIRECTORY_SEPARATOR,$className).'.php';
// echo $file;
if(!(is_file($file) && file_exists($file)))
{
throw new \Exception('文件名不合法或者不存在');
}
require $file;
}
使用修饰符来对属性和方法进行封装:新建一个 Snacks.php
abstract class Snacks //抽象类
{
private $name;
protected $sort;
public $pri;
public function __construct($name='',$sort='水果')
{
$this->name = $name;
$this->sort = $sort;
$this->pri = $pri;
}
//抽象方法
abstract function eat();
// 普通方法
public function Juicing()
{
echo '可以榨汁喝<br>';
}
public function getpri(){
$this->pri = $this->pri + 2;
return $this->pri ;
}
}
新建一个类文件 Apple.php
class Apple extends Snacks //继承
{
public $pri = 3;
public function getpri(){
$this->pri = $this->pri + 2;
return $this->pri ;
}
// 子类按照自己的需求去实现抽象方法, 如果抽象方法未全部实现 那么该类依然是一个抽象类
public function eat()
{
echo "{$this->name}是{$this->sort} 可以直接吃";
}
public function Juicing()
{
echo "{$this->name} 可以榨汁喝<br>";
}
}
新建一个实例文件 demo1.php
require 'autoload.php'; // 加载类文件 类的自动加载器
$Apple = new Apple("苹果",'水果');
$Apple->Juicing();
$Apple->eat();
echo '<hr>';
在实例文件 demo1.php 中输入
$p = new Pear('香梨','水果');
$p->eat();
$p->Juicing();
echo "苹果的价格: " . $Apple->getpri();
echo "<br>";
echo "香梨的价格: " . $p->getpri();
//苹果和香梨的价格是都是5
//echo Pear::$sort; //这里访问不到
新建一个类文件 Pear.php
class Pear extends Apple
{
public function getSpri(){
parent::getpri();// 这里调用了父类的方法.
$this->pri = $this->pri + 2;
return $this->pri ;
}
public function eat()
{
echo "{$this->name}是{$this->sort} 可以直接吃<br>";
}
public function Juicing()
{
echo "{$this->name} 可以榨汁喝<br>";
}
public function Fried()
{
echo "{$this->name} 可以裹上脆皮糊炸着吃<br>";
}
}