您的位置 首页 php

web开发之-PHP面向对象(8)

文件引用

在之前的例子中,我们都是写在一个PHP文件中的,对于逻辑非常小的功能,你可以写在一个php文件里,那么如果逻辑功能特别多,你要是再写一个php文件里,不说老板,连你自己都会疯掉的![奸笑]下面,我们来讲文件引用,你可以按照不同的功能模块写在不同的文件里,并在主文件里引用。假如,你家庭很富有,有一车汽车和一车自行车,你先骑自行车,一会累了,想开汽车,你可能会这样写:

 <?php
interface Tool{
    public function doDrive();
}
class Car implements Tool{
    public function doDrive(){
        echo "我要开汽车了".PHP_EOL;
    }
}
class Bike implements Tool{
    public function doDrive(){
        echo "我要骑自行车了".PHP_EOL;
    }
}
class Me{
    public function meDo(Tool $tool){
        $tool->doDrive();
    }
}
$car = new Car();
$bike = new Bike();
$me = new Me();
$me->meDo($car);
$me->meDo($bike);
?>  

以下代码当然能正常运行,输出如下:

 我要开汽车了
我要骑自行车了  

但是,这样看着好乱啊,一个php文件里写了太多的类以及逻辑文件了,现在让我们创建两个文件夹,一个叫car文件夹,里面放一个car.class.php;另外一个叫bike文件夹,里面放一个bike.class.php;最外面有一个me.php文件和一个tool.inter.php,那么这个文件如何来使用car.class.php和bike.class.php文件呢?这里有四个引入语句,其实也可以说是两个引入语句:include和include_once,requrire和require_once。下面是我们整理的文件夹结构:

me.php:

 <?php
define ('APP_ROOT',getcwd());
include APP_ROOT."./tool.inter.php";
include APP_ROOT."/car/car.class.php";
include APP_ROOT."/bike/bike.class.php";
use \tool\Tool as Tool;
use \car\Car as Car;
use \bike\Bike as Bike;

class Me{
    public function meDo(Tool $tool){
        $tool->doDrive();
    }
}
$car = new Car();
$bike = new Bike();
$me = new Me();
$me->meDo($car);
$me->meDo($bike);
?>  

too.inter.php:

 <?php
namespace tool;
interface Tool{
    public function doDrive();
}
?>  

bike.class.php:

 <?php
namespace bike;
use \tool\Tool as Tool;
class Bike implements Tool{
    public function doDrive(){
        echo "我要骑自行车了".PHP_EOL;
    }
}
?>  

car.class.php:

 <?php
namespace car;
use \tool\Tool as Tool;
class Car implements Tool{
    public function doDrive(){
        echo "我要开汽车了".PHP_EOL;
    }
}
?>  

注:以上主要用到了我们之前学到的命名空间namespace,常量的定义,以及这节课要讲的文件名含include,其中有一个新的系统函数getcwd()用来获取当前运行文件的路径。

我们上面的代码逻辑可以简单地理解为 按照汽车和自行车两个功能模块 分别把不同的功能放到了不同的目录文件夹下,在对于项目很大的情况下一定要分模块,分文件,这样哪个模块有问题,我们可以直接去改,而且目录结构一目了然! include可以命名用require替换,两者的区别时,如果引入的路径下的文件不存在,include会触发一个警告,并继续执行下去,而require会直接崩溃掉,不能继续运行;include_once相当于文件只引用一次,再次碰到include_once引用同样的文件,则不会执行;include你引用多少次,就引入多少次,这里的引用相当于把文件中的代码复制一份到引用的位置;require_once和require一样

警告:这里的文件引用和模块划分大家一定要理解并记住,因为一个好的工程师需要如何分模块来整理!

文章来源:智云一二三科技

文章标题:web开发之-PHP面向对象(8)

文章地址:https://www.zhihuclub.com/149924.shtml

关于作者: 智云科技

热门文章

网站地图