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

CentOS精简命令

删除自带web、数据库、php yum remove httpd* php* mysql-server mysql* php-mysql -y 删除不需要的程序 yum remove Deployment_Guide-en-US finger cups-libs cups ypbind bluez-libs desktop-file-utils ppp rp-pppoe wireless-tools irda-utils sendmail* samba* talk-server finger-server bind* xinetd nfs-utils nfs-utils-lib rdate fetchmail eject ksh mkbootdisk mtools syslinux tcsh startup-notification talk apmd rmt dump setserial portmap yp-tools -y yum groupremove "Mail Server" "Games and Entertainment" "X Window System" "X Software Development" "Development Libraries" "Dialup Networking Support" "Games and Entertainment" "Sound and Video" "Graphics" "Editors" "Text-based Internet" "GNOME Desktop Environment" "GNOME Software Development" -y yum -y groupremove "FTP Server" "PostgreSQL Database client" "PostgreSQL Database server" "MySQL Database server" "MySQL Database client" "Web Server" "Office Suite and Productivity" "E-mail server" "Ruby Support" "Printing client" 关闭selinux...

September 19, 2014 · 3 min · Me

推荐几个chrome必装插件

普通用户篇 Adblock大家族 URL: Adblock Plus AdBlock Adblock Pro 这几个货名气太大,赶紧安装,远离广告 强制雅黑字体 URL:强制雅黑字体 win7下还是用雅黑吧。。。。其他系统随意 OneTab URL:OneTab 标签神器,我就用这个导出当前所有标签的URL Proxy SwitchySharp URL:Proxy SwitchySharp 这个就不多说了,翻{防屏蔽}墙神器 Tampermonkey URL:Tampermonkey 油猴脚本,允许你在网页中执行任何js 微博是个好图床 URL:微博是个好图床 图片外链神器么,趁着Sina还没有封,抓紧用吧 微博急简 URL:微博急简 新浪微博的官网实在恶心,要学会做减法 慧慧购物助手 URL:慧慧购物助手 购物必备,海淘也给力! 妈妈再也不用担心我的macbook发烫了计划2.0Beta URL:妈妈再也不用担心我的macbook发烫了计划2.0Beta 我承认这个插件在气势上已经赢了,优酷土豆去广告 开发者篇 POSTMAN URL:POSTMAN chrome下测试接口神器 User-Agent Switcher URL:User-Agent Switcher 修改浏览器代理,调试app或者mobile页,还可以去广告。 NoFollow URL:NoFollow seo专用,给网页中no follow的链接高亮出来 SEO in China URL:SEO in China 快捷查询网站的SEO信息

September 19, 2014 · 1 min · Me

在Liunx上彻底删除kangle服务器

之前单位用的kangle服务器,便于快速搭建网站。 但是现在不想用了,如何删除呢? 其实很简单: 停止服务 service kangle stop 删除服务启动项 chkconfig kangle off 删除服务 chkconfig --del kangle 删除残留文件 rm -rf /vhs rm -f /etc/init.d/kangle 现在重启看看,是不是已经删除的很干净了! ##ps.这个删除流程也可以针对其他服务使用!## 顺便提一下 删除Apache可以用rpm -qa|grep apache|xargs rpm -e,一次删除所有与Apache有关的包

September 19, 2014 · 1 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

编译PHP5.6

准备 PHP的安装最头疼的就是因为某些类库没有安装而报错,所以编译前请确保以下包已安装 yum groupinstall "development tools" yum install -y gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libpng libpng-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses curl curl-devel openssl-devel gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel readline-devel libxslt-devel expat-devel xmlrpc-c xmlrpc-c-devel 编译 高大上的编译选项 ./configure \ --prefix=/usr/local/php \ --enable-fpm \ --with-curl \ --with-openssl \ --enable-mbregex \ --with-mysql \ --with-mysqli \ --with-mysql-sock \ --enable-pdo \ --with-pdo-mysql \ --with-pdo-pgsql \ --with-pdo-sqlite \ --enable-mysqlnd \ --with-gd \ --enable-gd-native-ttf \ --enable-exif \ --with-jpeg-dir=/usr/local/jpeg \ --with-png-dir=/usr/local/png \ --with-freetype-dir=/usr/local/freetype \ --enable-gd-jis-conv \ --with-gettext \ --with-zlib \ --enable-zip \ --with-bz2 \ --disable-fileinfo \ --enable-xmlreader \ --enable-xmlwriter \ --with-xmlrpc \ --enable-mbstring \ --enable-inline-optimization \ 20150524更新 5....

September 18, 2014 · 2 min · Me