PHP的框架常用函数

spl_autoload_register、set_exception_handler和set_error_handler、get_include_path等。 spl_autoload_register 与__autoload函数一样,但是更灵活。他的功能是当程序找不到当前正在使用的类时,在报错前,会调用此函数,如果找到了,就继续工作。 set_exception_handler 接管了原本的异常处理,可以隐藏或者美化输出,可以用throw new Exception触发。 set_error_handler 同上,接管了错误处理。可以用trigger_error触发。

October 11, 2014 · 1 min · Me

我们为什么使用框架

这篇文章于昨日早在215路早读时看到,写的很不错!可以作为学习框架或者写自己的框架之前的读物。 ps.文章中提到了一个名词——控制反转。这个词可能经常会考倒刚入门程序员。控制反转其实其实是一种外包的思想,将总做交给各个领域的’专家’去做,而你只负责如何调度他们的工作。明确的分工会给系统带来很多维护上的便利。这个概念常常和依赖注入同时出现,而什么是依赖注入呢?其实他是控制反转的一个实现方式。 如果你对框架这个概念还不是很理解,那么还可以参考一下老高的系列文章THINKPHP框架解析,老高带你深入框架内部,去看看框架到底做了什么,和为什么这么做。希望这篇转帖和老高的文章能够帮助你深入理解框架的作用。 ...

October 10, 2014 · 2 min · Me

git在公司内部的使用实践

搜索git使用方法是发现这篇文章,几经搜索终于找到原作者的博客,找到了原文,现在分享给大家,希望能够普及git的使用。 以下: ...

October 8, 2014 · 1 min · Me

Call-to-undefined-function-imagettftext()解决方法

老高在一个新环境中装DEDECMS的时候发现后台验证码无法显示。直接搜索一下这个错误,有人说session错误,有的说权限错误等等,这不胡扯么!只能看源代码了,定位到文件/include/vdimgck.php。出错的函数是imagettftext(),由于织梦使用了@将错误隐去,导致这次莫名的错误。将@去掉,错误立马出现: Fatal error: Call to undefined function imagettftext() 现在我们就明确了,出现错误的原因是PHP编译时没有加上FreeType。 解决办法: 首先编译安装FreeType,以2.4.0为例: wget http://download.savannah.gnu.org/releases/freetype/freetype-2.4.0.tar.bz2 tar -jxf freetype-2.4.0.tar.bz2 cd reetype-2.4.0 # 安装到/usr/local/freetype ./configure --prefix=/usr/local/freetype make && make install 下面我们重新编译PHP,加上参数--with-freetype-dir=/usr/local/freetype ./configure \ ... \ ... \ --with-freetype-dir=/usr/local/freetype 编译完成重启php kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid` 再GD库中找到FreeType Support说明安装成功! 需要注意的是,如果服务器freetype的版本是1.*,那么你可能需要改变编译参数为--with-ttf[=DIR],以下转自ChinaUnix论坛: 字库 配置开关 FreeType 1.x 要激活 FreeType 1.x 的支持,加上 –with-ttf[=DIR]。 FreeType 2 要激活 FreeType 2 的支持,加上 –with-freetype-dir=DIR。 T1lib 要激活 T1lib(Type 1 字体),加上 –with-t1lib[=DIR]。...

October 3, 2014 · 1 min · Me

thinkphp钩子的实现

钩子概念对初学者来说可能比较抽象难懂,但是只要掌握了他的工作方式,那么自己动手写一个钩子机制也不难。 Hook这个词很有意思,以下引用自某网络词典: Hook用作名词时意思是“钩”,转化为动词时可表示把某物弯成钩形,也可表示用弯曲的东西把某物体钩住,引申可表示为“吊”“挂”等。 作为一个程序猿,老高对钩子的解释是,他就是一个触发机制,把你的软件功能想象成一个陷阱,放到##系统流程##可能经过的路上,如果陷阱被系统踩到,就会执行你的程序,当你挂载的钩子执行完后,系统会根据你的程序的结果继续运行。 老高最早接触Hook的编程思想是源于windows,当时打dota很入迷,突然想研究一下改键的原理,于是发现了系统钩子这一说法。 改键的原理,简单地说来就是拦截系统按下键盘时的默认动作,如果需要把小键盘的7映射到Q上,就在拦截时做一个判断,如果的键码是小键盘7,就改为Q的键码,最后发送给系统修改后的键码,即完成了改键操作。 钩子机制的使用在很多系统上都有体现,如windows、wordpress、thinkphp等,由钩子实现的功能在wordpress中叫做插件,在TP中叫做行为。 ...

September 29, 2014 · 1 min · Me

thinkphp框架解析1----只是一个开始

接上一篇起源 在ThinkPHP/Library/Think/下找到App.class.php,他就是应用程序类,他会见证整个应用从创建到消亡的整个过程。 上次我们分析到系统执行App::run(),下面开始分析此方法: ...

September 29, 2014 · 1 min · Me

thinkphp框架解析0----起源

THINKPHP是国人开发的PHP框架,如今终于深入内部打探了一番,下面给大家分享老高的心得。 ...

September 25, 2014 · 2 min · Me

PHP一些不为人知的使用方法

今天为大家介绍一些比较抽象,但十分有用的关于PHP的用法。老高在通读了THINKPHP源代码后才发现了这一篇天地。合理的使用这些方法或者常量能帮助你更快速的开发或者DEBUG。 ...

September 24, 2014 · 6 min · Me

PHP导出项目的数据字典

突然想到这个方法,果然已经有人实现了。 有这个脚本也能看出来,数据表的很多信息都保存在INFORMATION_SCHEMA.TABLES表里,还有数据表注释的重要性! <?php /** * 生成mysql数据字典 * @author niming<287384795@qq.com> */ //配置数据库 $dbserver = "localhost"; $dbusername = "root"; $dbpassword = "root"; $database = 'mydb'; //其他配置 $title = '系统数据字典'; $mysql_conn = @mysql_connect("$dbserver", "$dbusername", "$dbpassword") or die("Mysql connect is error."); mysql_select_db($database, $mysql_conn); mysql_query('SET NAMES utf8', $mysql_conn); $table_result = mysql_query('show tables', $mysql_conn); //取得所有的表名 while ($row = mysql_fetch_array($table_result)) { $tables[]['TABLE_NAME'] = $row[0]; } //循环取得所有表的备注 foreach ($tables AS $k=>$v) { $sql = 'SELECT * FROM '; $sql ....

September 23, 2014 · 2 min · Me

在Linux上使用sysstat的iostat监控系统IO

在Linux上使用sysstat 搜索iostat命令后才发现如此强大的系统监控工具! 安装 centos yum install sysstat -y Ubuntu apt-get install sysstat 使用 iostat 工具提供CPU使用率及硬盘吞吐效率的数据; mpstat 工具提供单个处理器或多个处理器相关数据; sar 工具负责收集、报告并存储系统活跃的信息; sa1 工具负责收集并存储每天系统动态信息到一个二进制的文件中。它是通过计划任务工具cron来运行,是为sadc所设计的程序前端程序; sa2 工具负责把每天的系统活跃性息写入总结性的报告中。它是为sar所设计的前端 ,要通过cron来调用 sadc 是系统动态数据收集工具,收集的数据被写一个二进制的文件中,它被用作sar工具的后端; sadf 显示被sar通过多种格式收集的数据; iostat ➜ /bin iostat –help 用法: iostat [ 选项 ] [ <时间间隔> [ <次数> ] ] Options are: [ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] [ -j { ID | LABEL | PATH | UUID | … } [ […] | ALL ] ] [ […] | ALL ] [ -p [ [,…] | ALL ] ]...

September 18, 2014 · 1 min · Me