<?phpinterface 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:
<?phpdefine ('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:
<?phpnamespace tool;interface Tool{ public function doDrive();}?>
bike.class.php:
<?phpnamespace bike;use \tool\Tool as Tool;class Bike implements Tool{ public function doDrive(){ echo "我要骑自行车了".PHP_EOL; }}?>
car.class.php:
<?phpnamespace 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一样!
警告:这里的文件引用和模块划分大家一定要理解并记住,由于一个好的工程师须要如何分模块来整理!