php中嵌套调用的原理,嵌套调用

## 嵌套调用

- 模块与模块之间的相互调用(相对路径)

- 项目和项目之间的相互调用(绝对路径)

- 也可以写一个通用模块就可以大面积使用,减少代码维护成本

- 或许可以实现一些神奇的效果

#### 示例代码

设置文件/html/www/demo/tpl/tpl.blade.php内容如下

~~~

这是最顶端模块

{!! tpl('a') !!}

{!! tpl('a/aa', ['get' => ['name' => 'GET参数来自顶部模块'], 'post' => ['name' => 'POST参数来自顶部模块']]) !!}

{!! tpl('c') !!}

{!! tpl('e') !!}

#以下是全局调用示例
#这样就可以跨项目相互调用

{!! tpl('/www/demo/tpl/c') !!}

~~~

设置文件/html/www/demo/tpl/tpl.css内容如下

~~~

_CLASS_{

width: 500px;

}

~~~

设置文件/html/www/demo/tpl/a/tpl.blade.php内容如下

~~~

a模块

{!! tpl('aa', ['get' => ['name' => 'GET参数来自a模块'], 'post' => ['name' => 'POST参数来自a模块']]) !!}

~~~

设置文件/html/www/demo/tpl/a/tpl.css内容如下

~~~

_CLASS_{

color:#F00;

}

~~~

设置文件/html/www/demo/tpl/a/aa/tpl.blade.php内容如下

~~~

aa模块:{{$_GET['name']}},{{$_POST['name']}}

~~~

设置文件/html/www/demo/tpl/a/aa/tpl.css内容如下

~~~

_CLASS_{

background-color: #FEE;

}

~~~

设置文件/html/www/demo/tpl/c/tpl.blade.php内容如下

~~~

c模块

{!! tpl('../a/aa', ['get' => ['name' => 'GET参数来自c模块'], 'post' => ['name' => 'POST参数来自c模块']]) !!}

~~~

设置文件/html/www/demo/tpl/c/tpl.css内容如下

~~~

_CLASS_{

color:#08F;

}

~~~

设置文件/html/www/demo/tpl/e/tpl.blade.php内容如下

~~~

e模块

{!! tpl('ee', ['get' => ['name' => 'GET参数来自e模块'], 'post' => ['name' => 'POST参数来自e模块']]) !!}

~~~

设置文件/html/www/demo/tpl/e/tpl.css内容如下

~~~

_CLASS_{

color:#080;

}

~~~

设置文件/html/www/demo/tpl/e/ee/_init.php内容如下

~~~

return function (){

$get_name = $_GET['name'];

$post_name = $_POST['name'];

echo "

--- {$get_name} | {$post_name} ----
";

};

~~~

设置文件/html/www/demo/tpl/e/ee/tpl.blade.php内容如下

~~~

ee模块

~~~

设置文件/html/www/demo/tpl/e/ee/tpl.css内容如下

~~~

_CLASS_{

background-color: #CCF;

}

~~~

打开网址[http://demo.tphp.com/tpl](http://demo.tphp.com/tpl)获得如下效果

![](https://box.kancloud.cn/443db1fd2a2cbda2d6b1f34add6ee23b_565x357.png)

生成源代码

![](https://box.kancloud.cn/a6c2a932283b76e173dd3e6735d992b9_783x711.png)

生成的CSS

![](https://box.kancloud.cn/8c0a49132734564506aa801ce144010a_578x507.png)

生成的JS(未设置tpl.js,所以没有js代码)

这是总页面路径,当然所有的子页面同样可以单独访问,比如:

打开网址[http://demo.tphp.com/tpl/c](http://demo.tphp.com/tpl/c)获得如下效果

![](https://box.kancloud.cn/7def0ae08c063ed67d690eb77e298139_568x127.png)

- 嵌套的页面有点多,页面嵌套、CSS嵌套放到一起就会有点绕,需耐心体会

- JS嵌套也是一样,这里就不举例了

- 虽然调用的有点多,但逻辑清晰,很容易控制模块与模块之间的关系,模块之间的class自动指向,无需记住样式名称,所以这里SCSS就发挥了极大的作用,只要写一次_CLASS_就能够实现自动指向,SCSS写法如下:

~~~

_CLASS_{

.child_1{

...

}

.child_2{

...

}

background-color: #CCF;

}

~~~

将转换为:

~~~

_CLASS_{

background-color: #CCF;

}

_CLASS_ .child_1{

...

}

_CLASS_ .child_2{

...

}

~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值