关于php命名空间的理解

理解命名空间首先要知道命名空间的作用,也就是它的出现解决了那些问题官方给出的解决的问题是:用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。可以看下这篇文章:https://blog.csdn.net/zhanghuiqi205/article/details/84671608         https://www.php.cn/php-weizijiaocheng-414933.html从ThinkPHP5.0开始,遵循PSR-4自动加载规范,只需要给类库正确定义所在的命名空间,并且命名空间的路径与类库文件的目录一致,那么就可以实现类的自动加载,从而实现真正的惰性加载。以phpmailer这个类库为例,composer自动加载好该类库,有用的文件都放在src这个目录下这些文件的命名空间都是这个:namespacePHPMailerPHPMailer;如果我们要使用PHPMailer这个类,需要usePHPMailerPHPMailerPHPMaile...

PHP下载远程图片的几种方法总结

1.使用file_get_contentsfunctiondlfile($file_url,$save_to){$content=file_get_contents($file_url);file_put_contents($save_to,$content);}2.使用CURLfunctiondlfile($file_url,$save_to){$ch=curl_init();curl_setopt($ch,CURLOPT_POST,0);curl_setopt($ch,CURLOPT_URL,$file_url);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);$file_content=curl_exec($ch);curl_close($ch);$downloaded_file=fopen($save_to,'w');fwrite($downloaded_file,$file_content);fclose($downloaded_file);}3.使用fopenfunctiondlfile($file_url,$save_to){$in=f...

简单使用phpspider采集本博客文章内容

采集流程根据链接获取页面内容(curl)->获取需要采集的内容(可以通过正则、xpath、css选择器等方法进行筛选)<?phprequire_once'phpspider/autoloader.php';usephpspidercorephpspider;usephpspidercoreequests;usephpspidercoreselector;/*DoNOTdeletethiscomment*//*不要删除这段注释*/requests::$input_encoding='GB2312';requests::$output_encoding='GB2312';//获取博客文章列表的文章urlfor($i=1;$i<=10;$i++){$url="https://www.cnblogs.com/jcydd/default.html?page=".$i;$html=requests::get($url);//var_dump($html);$selector="/<asid="homepage1_HomePageDays_DaysList_ctl0d_Day...

PHP与thinkphp中var_dump()打印数组显示不全问题

在我们进行php开发的时候,经常会使用var_dump()函数进行数组的打印,以方便我们程序的调试,而有时候我们在进行多维数组打印的时候会发现多维数组打印不全,有些地方被…代替,这就是我们php配置的问题了。 打开php.ini搜索xdebug,会找到以下信息:xdebug.var_display_max_children=128xdebug.var_display_max_data=512xdebug.var_display_max_depth=5如果没有这些信息,可以手动添加,添加时注意权限问题。其中xdebug.var_display_max_children表示显示的数组子元素或对象属性的最大数量,不限制则设定为-1。虽然可以设定为不限制,但在调试过程中,特别是打印数据库信息时,最好设定一个合理的值,获取到有用的信息即可。xdebug.var_display_max_data表示显示字符串的最大长度,不限设置为-1。这个设置虽然不是数组的,但是也是比较常用的,所以这里也给大家提示一下。xdebug.var_display_max_depth表示显示数组或...

thinkphp5.1跨模块调用控制器或者模型

tp5.1采用命名空间的方式进行调用。  ...

thinkphp5命令行访问

入口文件后加一个空格就行了1,首先cd到站点目录public下,我的入口文件是默认的index.php,然后执行以下命令,2,php要加入环境变量访问index模块下的index控制器下的test方法phpindex.phpindex/index/test...

thinkphp5.1 使用第三方扩展类库

此案例介绍的不是通过composer加载的,是手工下载放入extend目录下的扩展类库,仍然以phpspider为例将owner888目录放入extend目录下,也可以直接将phpspider目录放入extend目录,这里仍然用owner88为例是为了认清和composer的区别在需要使用的地方加上如下代码即可:useowner888phpspidercorephpspider; ...

thinkphp5.1composer引入第三方类库使用注意

下面以引入phpspider为例子:composer引入: composerrequireowner888/phpspider 这时在vender目录下会多出一个owner888目录,里面就有我们需要的类库phpspider文件夹,有下面这些文件我们在需要使用的控制器头部添加代码,这时就可以使用phpspidercorephpspider文件里的类库了usephpspidercorephpspider;之前一直在纠结为什么没有加owner888这个目录,可能是composer下载时composer目录下的installed.json文件知道哪些可以自动加载。在这里手工考入的文件无法自动加载。 ...

thinkphp5.1控制器初始化函数initialize与构造函数__construct区别

构造函数中子类的构造方法会覆盖父类的构造方法,如果要继承父类的构造方法可以加入parent::__construct();例子://另一种方法,使用构造函数初始化publicfunction__construct(){//使用父类的构造函数,也就是调用Controller类的构造函数parent::__construct();if(session('username')==null){$this->error('请先登录','login/login');}}initialize初始化,,子类的initialize会覆盖父类的,如果要继承父类的initialize方法可以跟构造函数一样,调用parent::initialize();publicfunctioninitialize(){if(session('username')==null){$this->error('请先登录','login/login');}} ...

thinkphp5 join使用注意

A表有id,name,time等字段,B表有id,type,uid,email,address等字段。A表中的id和B表中的uid对应。Db::table(A表)->alias('a')->join('B表b','a.id=b.uid')->find(); 这样是把B表中的所有字段都给返回了,B表的字段会覆盖A中的同名字段,比如最终返回的结果中id是B表中的id这时要注意指定字段->field('a.*,b.email,b.adderss')...

thinkphp5控制器访问转换问题

假设定义了HelloWorld控制器url访问地址就是:http://localhost/index.php/index/hello_world,与此同时view目录下的模板文件夹要命名为hello_world,否则会提示找不到模板如果你期望通过http://localhost/index.php/index/HelloWorld可以访问,那么必须关闭URL的自动转换设置//是否自动转换URL中的控制器和操作名'url_convert'=>false,...

thinkphp5文件上传问题

tp5中文件上传如果没有数据就会报错,所以要先做一个判断//先接收文件数据$isfile=$_FILES;//判断是否上传图片数据,如果没有上传数据二位数组中的name会为空,如下例:if($isfile['brand_logo']['name']==''){}else{} 下面是一个完整的图片上传代码 if(request()->isPost()){$brand=model('brand');$data=$_POST;$isfile=$_FILES;//判断是否上传图片if($isfile['brand_logo']['name']==''){$res=$brand->add($data);if($res['valid']){$this->success($res['msg'],'lst');}else{$this->error($res['msg']);}}else{$file=request()->file('brand_logo');$info=$file->validate(['size'=>155678,'ext...

php静态方法和属性

静态方法和属性由static关键字定义静态方法和属性不用实例化也可以直接访问,如self::test(),self::tt类实例化后可以访问静态方法,但是不可以访问静态属性 声明类属性或方法为静态,就可以不实例化类而直接访问。静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。为了兼容PHP4,如果没有指定访问控制,属性和方法默认为公有。由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用。静态属性不可以由对象通过->操作符来访问。用静态方式调用一个非静态方法会导致一个E_STRICT级别的错误。就像其它所有的PHP静态变量一样,静态属性只能被初始化为文字或常量,不能使用表达式。所以可以把静态属性初始化为整数或数组,但不能初始化为另一个变量或函数返回值,也不能指向一个对象。...

thinkphp5.1页面页面模板及参数配置

success和error跳转的模板在thinkphp/tpl/dispatch_jump.tpl 配置参数在thinkphplibraryraitscontrollerjump.php文件里面...

thinkphp5.1静态文件存放问题

5.1的版本不能将静态文件放在application目录下,只能放在public目录下,否则会拒绝访问...
首页上一页...610611612613614...下一页尾页