[TOC]
## src 目录
通常开发在Laravel中的/app目录下开发,该目录下的文件默认都可以访问,因为Laravel自动加载了里面的文件,src目录做的就是这项工作,它能像/app目录一样自动加载文件,所以要写自动加载机制类文件在src目录中进行就可以了。
- 除了autoload文件内容外,其他文件都是自动加载的
- 比如 /html/plugins/tphp/demo/src/autoload 文件设置内容 (以换行作为分隔符)
```
abc.php
def.php
```
- 以上两个文件将强制加载 (文件存在的情况下)
- 比如 /html/plugins/tphp/demo/src/abc.php文件存在
## html 目录
- 和 /html 目录功能一样,但也有不同
- 默认目录: /html
- 支持 function、import、layout、page 目录
- /config/domains.php 中的 tpl 目录选择范围为 /html 下的所有文件或文件夹
- 当前插件目录: /html/plugins/tphp/demo/html
- 仅支持 layout 目录
- 插件中的 domains.php 的 tpl 目录选择范围为 /html/plugins/tphp/demo/html 下的所有文件或文件夹
- 所以在插件中设置 tpl 选项是无法访问插件之外的目录的(但可指向其他插件目录)
## import 目录
- 功能和 /html/import 一致
- 与 src 不同的是,import 是使用时加载
- 同一个文件的优先级, 如 Demo.php
- 当前插件路径: /html/plugins/tphp/demo/import/Demo.php
- 根目录路径: /html/import/Demo.php
- 系统路径: /vendor/tphp/tphp/import/Demo.php
- 优先级是: 当前插件路径 > 根目录路径 > 系统路径
设置文件/html/plugins/tphp/demo/import/MyTest.php内容如下
```
<?php
class MyTest {
public function get($str = ""){
return [
"str" => $str
];
}
}
```
设置文件/html/plugins/tphp/demo/html/www/import/_init.php内容如下
```
<?php
return function () {
dump(import("MyTest")->get("TPHP"));
};
```
打开网址[http://plu.tphp.com/import](http://plu.tphp.com/import)获得如下效果![](/static/plugins/tphp/help/plugins/import.png)
## static 目录
#### 常规模式开发存在的问题
通常情况会把静态文件放置 /public 目录下,会存在如下问题
- 所有项目的静态文件都放在一起很混乱
- 项目多了找文件会令人抓狂
- 从很多项目中拆解出一个项目相当费劲并会携带很多没用的文件
#### 插件静态模式的优势
- 无需过多的考虑文件存放路径、命名及分组等问题
- 插件之间静态路径互不干扰
- 无需从 /public 路径中放入文件
- 自动生成软连接到 /public/static/plugins 目录
- 无需在html中加入css和js文件
设置文件/html/plugins/tphp/demo/static/css/index.css内容如下
```
body {
background-color: #FEE;
}
```
设置文件/html/plugins/tphp/demo/static/js/test1.js内容如下
```
function test1() {
return 'test1';
}
```
设置文件/html/plugins/tphp/demo/static/js/test2.js内容如下
```
function test1() {
return 'test1';
}
```
设置文件/html/plugins/tphp/demo/html/www/static/test/tpl.blade.php内容如下
```
@php
// 指向于当前插件 tphp/demo
// $plu->css() 和 $plu->js() 都可以直接传递字符串,也可以传递数组
$plu->css("css/index.css");
$plu->css([
// 指向插件为 abc/def 路径
// 相当于 plu("abc/def")->css(["css/index.css", "@css/index2.css"]);
"abc/def" => [
"css/index.css",
// 因为css文件都是在文件顶部,所以设置 @ 效果不变
"@css/index2.css"
],
// 指向于当前插件 tphp/demo,相同路径不会重复显示
"css/index.css"
]);
$plu->js([
// 显示在顶部 head 标签中
"@js/test1.js",
// 默认显示在body的底部
"js/test2.js"
]);
// style 和 script 会很少使用,可能特殊情况下会使用
// <style></style> 设置
$plu->style(<<<EOF
.test1 {
color: #999;
}
.test2 {
color: #999;
}
EOF
);
// 多次设置
// 或直接使用 style('...')
// 顶部实例: $plu->styleTop('...')
$plu->style(<<<EOF
.test3 {
color: #999;
}
EOF
);
// <script></script> 设置
// 或直接使用 script('...')
// 顶部实例: $plu->scriptTop('...')
$plu->script(<<<EOF
var a = "TPHP";
EOF
);
// 可合并使用
// $plu->css('abc.css')->js(['a.js', 'b.js'])->js(['d.js'])->style('')->script('');
@endphp
<div>$plu->static(): {{ $plu->static() ~~</div>
<div>$plu->static("test"): {{ $plu->static("test") ~~</div>
<div>plu("abc/def")->static(): {{ plu("abc/def")->static() ~~</div>
```
设置文件/html/plugins/tphp/demo/html/www/static/test/tpl.css内容如下
```
.tpl {
color: #080;
}
```
设置文件/html/plugins/tphp/demo/html/www/static/test/tpl.js内容如下
```
var tpl = "TPHP";
```
打开网址[http://plu.tphp.com/static/test](http://plu.tphp.com/static/test)获得如下效果![](/static/plugins/tphp/help/plugins/static/test.png)
查看源码
![](/static/plugins/tphp/help/plugins/static/test_src.png)