今天一起来学习下TP的自动验证具体是怎么实现的,首先验证规则的定义格式如下: // 验证因子定义格式 array(field,rule,message,condition,type,when,params) field:验证字段的名称 rule:验证表达式 message:错误信息 condition:验证条件,0存在就验证 1 必须验证 2值不为空时验证 type:验证方式 when:什么时候验证 1插入时 2 更新时 3两种情况都验证 params:额外参数,当验证规则类型为function,callback等时用到
我们知道ThinkPHP有公共的函数文件和配置文件,位于Common目录下,默认Common/function.php为公共的函数文 件,Conf/config.php为公共配置文件。好了,那么如何自定义其他的公共函数和配置文件呢。这里不得不讲到两个配置参数 LOAD_EXT_FILE和LOAD_EXT_CONFIG了。 1. LOAD_EXT_FILE配置的是自定义的函数文件,比如我想在Common目录下再创建一个common.php文件,那么在config.php里 则可以配置LOAD_EXT_FILE=>'common',这样common.php文件就会自动载入了。 Common/Conf/config.phpreturn array( LOAD_EXT_FILE=>'common');
在核心类文件Think.class.php里,Think定义了autoload方法,并用spl_autoload_register注册为自动加载的方法。下面来解说下该方法的原理。 ThinkPHP的自动加载分三种情况: 1.map映射 Think类里定义了$_map属性,用来保存用户添加的类映射信息 方法addMap和getMap分别用于添加和获取映射信息。如果$_map里存在$class的映射,则直接引入class, // 检查是否存在映射 if(isset(self::$_map[$class])) { include self::$_map[$class]; } 2.命名空间下的自动加载 首先判断$class是否含有\\,用以区分命名空间自动加载和非命名空间加载。其结果无非获取一:类的basename,二:类的dirname。然后拼接类的路径 这里有系统的命名空间和用户自定义的命名空间,系统命名空间会自动定位,dirname为LIB_PATH $name = strstr($class, '\\', true); if(in_array($name,array(&
研究了下TP的加载机制,以下是我的一些总结: 1.首先由应用入口文件index.php引入TP入口文件ThinkPHP.php 2.ThinkPHP.php里主要是定义一些系统常量,URL模式定义,系统信息等,然后加载核心类文件Think.class.php,这个类里定义了start方法,这个方法是系统加载的核心,ThinkPHP的核心函数和类文件加载,配置文件加载,字段映射加载,行为扩展加载,运行时日志等的生成,模块目录的生成等都在这个方法里有调用
最近做一个微网站,图片上传出现问题。有时能上传图片,有时上传失败。代码测试了好几遍,也是没问题的。后来查看nginx日志access.log,发现了413问题,说明上传的图片太大了。解决办法是:nginx.conf配置client_max_body_size,我的配置里默认为2M,上传的图片超过这个大小就上传失败了。 vi /usr/local/nginx/conf/nginx.conf 修改http下的client_max_body_size为10M,问题解决了!
总结了下自己平时常用的正则表达式,分享给大家: 邮箱:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/ url:/^http(s?):\/\/(?:[A-za-z0-9-]+\.)+[A-za-z]{2,4}(:\d+)?(?:[\/\?#][\/=\?%\-&~`@[\]\':+!\.#\w]*)?$/ 货币:/^\d+(\.\d+)?$/ 数字:/^\d+$/ 整型:/^[-\+]?\d+$/ 浮点型:/^[-\+]?\d+(\.\d+)?$/ 英文:/^[A-Za-z]+$/ 电话手机:/(^[0-9]{3,4}\-[0-9]{7,8}$)|(^[0-9]{7,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)|(13\d{9}$)|(15[0135-9]\d{8}$)|(18[267]\d{8}$)/'
/** 动态获取当前请求的url /* <?php $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTPS'] !='off' || $_SERVER['SERVER_PORT'] == 443) ?'https':'http'; $url = $protocol.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; echo $url;
首先进入discuz后台->全部->SEO设置->URL静态化,勾选需要静态化的页面。点击提交,提交后点右上角查看当前的rewrite规则 1.Apache ①开启rewrite模块,将http.conf中LoadModule rewrite_module modules/mod_rewrite.so前面的#去掉,并将AllowOverride改为All
百度提供了分享按钮的js代码,直接copy拿过来用就OK了,比较方便。 获取js代码可以到百度分享按钮官网http://share.baidu.com获取,按钮有三种类型,每个类型代码是不一样的。
观察者模式可以这么理解,比如说一个办公室里的员工,都有炒股的爱好。而项目经理经常出差不在办公室,所以他们除了工作就可以进行炒股,但是为了避免经理回来时看到,所以他们需要知道经理什么时候回来进办公室。于是他们可以跟前台联合,如果经理回来,那么前台只需要给其中一人打电话,那么所有人就知道经理回来了。如果把经理回来当做一个对像,各个员工当做一个对像。那么当经理回来这个对像状态改变时,各个员工对象的状态都发生相应的改变。 所谓观察者模式,即是定义对像间的一种一对多的依赖关系。以便一个对象的状态发生改变时,所有依赖于它的对像都能得到通知并自动改变状态。
Nginx默认不支持pathinfo格式的url,最近学习ThinkPHP的URL_MODEL时遇到了这个问题。Apache服务器下开启rewrite,将AllowOverride设置为All就ok了,但是Nginx却需要进一步配置,网上找了很多教程,大都是转载的比较多,试了好几个都没有成功。后来按照另一个教程进行配置,结果ok了。下面是配置过程。
Step 1 – Setup a Twitter Application This process is straightforward and you should have a set of keys within a few minutes. Visit https://dev.twitter.com/apps/ and sign in using your Twitter username and password. This doesn’t have to be the username or password of the stream you need access to, just a Twitter account you control. Select ‘Create new application’ and enter the application details. The name and description can be anything you like real
PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流。这里整理一下常用的示例供参考。
1.1 HTTP协议中几个状态码的含义:503 500 401 403 404 200 301 302。。。 200 : 请求成功,请求的数据随之返回。 301 : 永久性重定向。 302 : 暂时行重定向。 401 : 当前请求需要用户验证。 403 : 服务器拒绝执行请求,即没有权限。 404 : 请求失败,请求的数据在服务器上未发现。 500 : 服务器错误。一般服务器端程序执行错误。 503 : 服务器临时维护或过载。这个状态时临时性的。 1.2 Include require include_once require_once 的区别. 处理失败方式不同: require 失败时会产生一个致命级别错误,并停止程序运行。 include 失败时只产生一个警告级别错误,程序继续运行。 include_once/require_once和include/require 处理错误方式一样, 唯一区别在于当所包含的文件代码已经存在时候,不在包含。
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号