手册
目录
收藏345
分享
阅读23618
更新时间2022-04-11
讲解前先列出最后的整体目录结构,假定www目录为当前的项目目录:
www ├── querylist │ ├── Ext │ │ └── Hello.php │ ├── QueryList.php │ └── vendor │ └── testHello.php
演示的所有源码打包下载:完整下载
安装querylist
composer create-project jaeger/querylist
然后到querylist目录去执行下面命令安装AQuery,AQuery为所有插件的基类,插件必须继承AQuery并实现run()方法.
composer require jaeger/querylist-ext-aquery
querylist目录下新建Ext目录querylist/Ext目录可用于存放QueryList扩展
querylist/Ext目录下新建扩展文件Hello.phpgetInstance();
//设置QueryList对象的html属性
$ql->html = $this->getHtml($args['url']);
//返回QueryList对象
return $ql;
}
/**
* 自定义一个抓取网页源码的方法
*/
public function getHtml($url)
{
return file_get_contents($url);
}
}'http://www.baidu.com' ]); $data = $ql->setQuery([ 'title'=>['title','text'] ])->data; print_r($data); 输出结果; Array ( [0] => Array ( [title] => 百度一下,你就知道 ) )
下面是Request扩展的源码:
* @version 1.0
* 网络操作扩展
*/
class Request extends AQuery
{
protected function hq(array $args)
{
$args = array(
'http' => isset($args['http'])?$args['http']:$args,
'callback' => isset($args['callback'])?$args['callback']:'',
'args' => isset($args['args'])?$args['args']:''
);
$http = $this->getInstance('QL\Ext\Lib\Http');
$http->initialize($args['http']);
$http->execute();
if(!empty($args['callback'])){
$http->result = call_user_func($args['callback'],$http->result,$args['args']);
}
return $http;
}
public function run(array $args)
{
$http = $this->hq($args);
$ql = $this->getInstance();
$ql->html = $http->result;
return $ql;
}
}扩展之间还可以继承,下面的Login扩展继承了Request扩展并重写了run()方法:
* @version 1.0
* 模拟登陆扩展
*/
class Login extends Request
{
private $http;
public $html;
public function run(array $args)
{
$this->http = $this->hq($args);
$this->html = $this->http->result;
return $this;
}
public function get($url,$callback = null,$args = null)
{
$result = $this->http->get($url);
return $this->getQL($result,$callback,$args);
}
public function post($url,$data=array(),$callback = null,$args = null)
{
$result = $this->http->post($url,$data);
return $this->getQL($result,$callback,$args);
}
private function getQL($html,$callback = null,$args = null)
{
if(is_callable($callback)){
$result = call_user_func($callback,$result,$args);
}
$ql = $this->getInstance();
$ql->html = $html;
return $ql;
}
}相关
视频
RELATED VIDEOS
科技资讯
1
2
3
4
5
6
7
8
9
精选课程
共5课时
17.2万人学习
共49课时
77万人学习
共29课时
61.7万人学习
共25课时
39.3万人学习
共43课时
70.9万人学习
共25课时
61.6万人学习
共22课时
23万人学习
共28课时
33.9万人学习
共89课时
125万人学习