首先你要写一个接口文档,定义数据结构
创新互联建站专业为企业提供东台网站建设、东台做网站、东台网站设计、东台网站制作等企业网站建设、网页设计与制作、东台企业网站模板建站服务,10多年东台做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
然后开始封装写类
class a{
public function(){
$a = $_GET['a'];
echo '这里面写业务逻辑';
echo '输出结果366u';
}
}
PHP 接口
接口
使用接口(interface),你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
我们可以通过interface来定义一个接口,就像定义一个标准的类一样,但其中定义所有的方法都是空的。
接口中定义的所有方法都必须是public,这是接口的特性。
实现
要实现一个接口,可以使用implements操作符。类中必须实现接口中定义的所有方法,否则 会报一个fatal错误。如果要实现多个接口,可以用逗号来分隔多个接口的名称。
Note:
实现多个接口时,接口中的方法不能有重名。
Note:
接口也可以继承,通过使用extends操作符。
常量
接口中也可以定义常量。接口常量和类常量的使用完全相同。 它们都是定值,不能被子类或子接口修改。
范例
Example #1 接口代码示例
?php
// 声明一个'iTemplate'接口
interface iTemplate
{
public function setVariable($name, $var);
public function getHtml($template);
}
// 实现接口
// 下面的写法是正确的
class Template implements iTemplate
{
private $vars = array();
public function setVariable($name, $var)
{
$this-vars[$name] = $var;
}
public function getHtml($template)
{
foreach($this-vars as $name = $value) {
$template = str_replace('{' . $name . '}', $value, $template);
}
return $template;
}
}
// 下面的写法是错误的,会报错:
// Fatal error: Class BadTemplate contains 1 abstract methods
// and must therefore be declared abstract (iTemplate::getHtml)
class BadTemplate implements iTemplate
{
private $vars = array();
public function setVariable($name, $var)
{
$this-vars[$name] = $var;
}
}
?
Example #2 Extendable Interfaces
?php
interface a
{
public function foo();
}
interface b extends a
{
public function baz(Baz $baz);
}
// 正确写法
class c implements b
{
public function foo()
{
}
public function baz(Baz $baz)
{
}
}
// 错误写法会导致一个fatal error
class d implements b
{
public function foo()
{
}
public function baz(Foo $foo)
{
}
}
?
Example #3 多个接口间的继承
?php
interface a
{
public function foo();
}
interface b
{
public function bar();
}
interface c extends a, b
{
public function baz();
}
class d implements c
{
public function foo()
{
}
public function bar()
{
}
public function baz()
{
}
}
?
Example #4 使用接口常量
?php
interface a
{
const b = 'Interface constant';
}
// 输出接口常量
echo a::b;
// 错误写法,因为常量的值不能被修改。接口常量的概念和类常量是一样的。
class b implements a
{
const b = 'Class constant';
}
?
你也可以看看instanceof关键字的文档。
cms提供直接输出、PHP代码体两种方便开发者使用的数据输出接口。
1、直接输出
本类型是将后台录入的数据格式原样输出到客户端
返回格式为:
array(3) { ["code"]= int(1) ["msg"]= string(2) "ok" ["data"]= string(7) "test123" }
2、JSON数组
本类型数据内容必须是一个json格式的数组字符串
返回格式为:
array(3) { ["code"]= int(1) ["msg"]= string(2) "ok" ["data"]= array(3) { [0]= string(1) "1" [1]= string(1) "2" [2]= string(1) "3" } }
3、php执行代码
4、模板查询标签
本类型需要有CMS模板标签的使用经验,直接写标签代码返回结果
例如调用news模块全部数据:
{module module=news} 或者 {list action=module module=news}
模板标签只能写一段,不能写多段
通过以上的list查询方法可调用循环标签的全部数据,当然你可以对结果进行格式化处理,使用回调方法。
5、自定义模板标签
本类型需要有CMS模板标签的使用经验,直接写标签代码返回结果,区别于(4),本类型可以直接在标签里面写赋值方法和格式化显示,不需要写回调方法
这里循环出news模块的全部数据,只显示id,title,再把thumb转换为url地址。
也可以这样写,原理是将输出变量赋值给$api数组:
{module module=news} {php $api[$key]['id']=$t['id'];} {php $api[$key]['title']=$t['title'];} {php $api[$key]['thumb']=dr_thumb($t['thumb'], 200,200);} {/module}
以上语法格式为:
6、自定义PHP代码
本类型需要有PHP的开发使用经验,直接将php业务代码写进去
$api变量为直接返回,例如:
$api = '我的自定义返回变量值';
返回截图如下:
也可以自定义强制返回
$api = '我的自定义返回变量值'; PhpcmfService::C()-_json(1, '我的返回脚本成功了', $api); // 成功写法 PhpcmfService::C()-_json(0, '我的返回脚本失败了'); // 失败写法
接口的流程.
建立控制器(访问地址)-审核访问者身份(token)-验证提交数据是否符合类型(validate
)-处理接收数据(逻辑流程)-返回结果(json字符串).
其中要注意是否存在跨域,如果跨域要做跨域处理,例如返回jsonp.