# 高级用法 PHP

# 自定义PHP

有tp5框架作为程序驱动,苹果cmsV10其实远远比我们以往所认识的还要强大,当已有的tp5标签和cms标签满足不了需求时,就可以使用到模板自定义php。例如现在某些模板厂商都把自定义后台搬到模板里了,虽然足以说明模板自定义php很灵活,但是这种做法官方不推荐,一般用的最多就是自定义处理函数.

# 方法示例

在模板html目录中创建php 文件夹,并创建一个 extra.php文件

html
  └─php
     └─ extra.php
1
2
3
  • 在这个 extra.php 可是使用php为所欲为,包括调用内部模型、查询数据库、自定义api接口都是可以的。
  • extra.php
<?php
    //extra.php
    //自定义模板处理,变量 函数 等等
    //检查入口是否非法访问
	defined('ENTRANCE') or exit('Access Denied');
	//自定义函数
	function get_time(){
		return date('Y-m-d H:i:s',time());
	}
	function get_weekday(){
      $weekarray = array("日","一","二","三","四","五","六");
      return "星期".$weekarray[date("w")];
   }

	//输出99乘法表
   for($i=1;$i<=9;$i++) {
      for($j=1;$j<=$i;$j++) {
         echo "$i*$j=".$i*$j .'&nbsp;&nbsp;';
      }
      echo "<br />";
   }
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

然后在模板的html文件中使用模板php引入 extra.php 文件即可执行里面的php代码和使用里面定义的函数:

{php}require MAC_ROOT_TEMPLATE . 'php/function.php'{/php}
1

# 整合插件

示例

# 获取ppvod插件的配置参数  
$ppvod = get_addon_config('ppvod');
print_r($ppvod );

# 助手函数获取全后台数据
$mac = config('maccms');
print_r($mac);

1
2
3
4
5
6
7
8

# 使用模型

在模板自定义php中不仅仅支持全局通用函数的调用,还支持直接使用模型中的方法,例如 maccms:vod 这个标签的原始查询方法。完全可以使用listCacheData()方式来模拟,满足一些特殊要求。


$list = [];
$where = []
$where['by'] = 'time';
$where['num'] = 20;
$where['type'] = 'all';
$list = model('Vod')->listCacheData($where);
print_r($list);

1
2
3
4
5
6
7
8
9

要是model('Vod')模型中已有的方法还满足不了查询,还可以使用,模型 + where()自定义查询语句。

$list = [];
$where = [];
$where['vod_id'] = 123;
$list = model('Vod')->where($where)->limit(10)->select();
print_r($list);
1
2
3
4
5