川山甲

追求内心的非常平静!瞬间清空所有的杂念,达到物我两忘!

  博客园  :: 首页  ::  :: 联系 :: 订阅 订阅  :: 管理
  105 随笔 :: 0 文章 :: 1591 评论 :: 82万 阅读

随笔分类 -  PHP

PHP: Hypertext Preprocessor
摘要:序 作为程序员,设计出优雅而完美的系统,永远是让我们非常兴奋的事情。高手不在于你会多少语言,而在于你有多高的思想。 在设计中,怎么体现自身价值,那就是要比别人多想几步。 讲钩子程序,起源是对用户提交的参数校验(永远不要相信用户),一开始为了赶工期,按照比较传统的方式,每个接口里重复性的对参数进行过滤 阅读全文
posted @ 2017-01-16 18:41 川山甲 阅读(3166) 评论(2) 推荐(1) 编辑

摘要:序 很长时间没有写博文了,最近换了工作,长时间加班,根本没有时间做其他事情!今天闲下来了,想一想php性能方面的事情。这也是我2014年的第一篇博文! 推荐阅读:初学者到中级者应该掌握的! php是一个很流行的脚本语言,现在很多公司(新浪、优酷、百度、搜狐、淘宝等等)在使用这种语言进行网站开发。我的这篇文章,我只是希望能够提高你的php脚本性能。请记住你的php脚本性能,很多时候依赖于你的php版本、你的web server环境和你的代码的复杂度。优化你代码中的瓶颈Hoare曾经说过“过早优化是一切不幸的根源”。当你想要让你的网站更快运转的时候,你才应该去做优化的事情。当你要改变你代码之... 阅读全文
posted @ 2014-01-17 12:56 川山甲 阅读(16115) 评论(23) 推荐(55) 编辑

摘要:介绍你以前听说过AOP(Aspect Oriented Programming)吗?虽然在php方面,好像没有过多的使用,但是在企业级开发中,AOP被广泛使用。我将借此文,向大家介绍PHP方面的AOP。这篇文章主要解释AOP的概念。什么是AOP?在应用开发中,我们经常发现需要很多功能,这些功能需要经常被分散在代码中的多个点上,但是这些点事实上跟实际业务没有任何关联。比如,在执行一些特殊任务之前需要确保用户是在登陆状态中,我们把这些特殊人物就叫做"cross-cutting concerns",让我们通过Wikipedia来了解一下"cross-cutting co 阅读全文
posted @ 2012-08-22 09:58 川山甲 阅读(18690) 评论(9) 推荐(8) 编辑

摘要:介绍 PHP是一门非常令人惊奇的语言。它足够强大(最大的博客(wordpress)的核心语言),它足够广泛(运行在最大社交网站facebook上),它足够简单(作为初学者首选入门语言)。在低成本的机器上运行良好。而且php语言有很多非常不错的服务器套件(如WAMP和MAMP),很方便的安装在你的机器上。PHP有非常丰富的库资源,便于开发者很容易的处理一些业务。由于我们在项目中与日期接触最多,所以今天就从日期函数入手学习。举一个简单的date例子我将使用echo命令把内容输出到我们的客户端(浏览器)。我将使用下面的代码做为基础代码。<!DOCTYPE html><html la 阅读全文
posted @ 2012-08-17 11:50 川山甲 阅读(4258) 评论(3) 推荐(6) 编辑

摘要:介绍 这段时间一直做项目,所以相对忙碌些,今天终于有时间回过头来好好看一下自己写的代码,看哪里有问题,哪里有“坏味道”。 慢慢过,慢慢回忆代码。开始捕捉坏味道。常做的和常想的事情晦涩的if条件1)对于||的处理 上面的代码要比下面的代码理解起来花更多的时间 尽管减少代码行数是一个好目标,但把理解代码所需的时间最小化是一个更好的目标。返回值 上面的"$ret"是“我想不出名字“的托词。与其使用这样空洞的名字,不如挑一个能描述这个实体的值或者目的的名字。 $alias声明了这个变量是用来承载别名的—... 阅读全文
posted @ 2012-07-12 17:39 川山甲 阅读(5530) 评论(36) 推荐(46) 编辑

摘要:要成高手,必练“数据结构”和“算法。——不管什么程序员,一定要注重这方面的培养,要养成习惯。 基础算法和结构乃是编程之王道。——不要不迷恋哥,哥不是传说! 阅读全文
posted @ 2012-06-02 01:32 川山甲 阅读(15818) 评论(11) 推荐(10) 编辑

摘要:介绍也许有人说这个不是坏代码。——呵呵,坏与好永远是相对的,对我来说,这些代码是坏代码。我最近看了一个源码,是团购网站的源码,看到了很多的问题。源码地址:http://www.tttuangou.net/download.html常量的使用 把常量定义在方法体内,而且不只一个地方。 居然还有常量文件,而且也不只一个。 我建议把所有的常量放在一个常量文件,这样便于我们将来维护方便。一个文件放置多个类 这种代码更是让人一头雾水,... 阅读全文
posted @ 2012-05-22 09:12 川山甲 阅读(4188) 评论(22) 推荐(14) 编辑

摘要:介绍我发现了一个问题,今天与大家分享。我把整个过程描述一下。问题 公司有个框架是基于smarty写的,我负责php的升级,维护人员把新环境布上来之后,测试人员找我提出经常报错(错误:提示找不到文件的)。 我追踪了一下代码,原来是smarty的这个地方报的错误。 错误:这里报出文件不存在。 思考过程: 1、我原以为是程序里没有这个文件呢,结果发现,文件是有的,那是怎么回事? 2、后来我再猜是不是php内核有问题,我把php的相关内核文件看了一遍,也没发现问题。结果我就把整个过程跟项目经理说去了。——事情也没解决,就这样先不了了之。升级的事情先耽误着。 今天又发现这个问题,我第一... 阅读全文
posted @ 2012-05-06 11:47 川山甲 阅读(11725) 评论(30) 推荐(41) 编辑

摘要:思维导图介绍 前几篇系列文章,我比较关注的是<PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数>,但是我觉得我还是没有说清楚,我自己也有很多不理解的地方,而且这篇是我的第一篇这方面的文章,有很多的纰漏,所以我会经常性的去做修改,如果大家有好的意见不妨告知一、二。 今天谈得是“接口”,此接口非“Interface”,而是一个统称。我们一般可以把供别人使用的函数或者url(一般是用于提供数据)叫接口。——可能还有别的意思,毕竟我现在还属于“菜鸟”,如果有理解上的错误,请指正。 我们知道“容易被理解和被使用的接口”,是开发良好面向对象软件的关键。——本文将介绍“使接口变得更 阅读全文
posted @ 2012-04-10 16:53 川山甲 阅读(4433) 评论(14) 推荐(15) 编辑

摘要:思维导图点击下图,查看大图。介绍条件逻辑有可能十分复杂,因此本章提供一些重构的手法,专门用来简化它们。全文简述(你可直接跳过下面的内容) 核心重构:Decompose Conditional——分离”转辙逻辑“(switching logic)和”操作细节“(details)分离。 多处测试有相同结果:Consolidate Conditional Expresssion 条件代码中去掉重复成分:Consolidate Duplicate 标识特殊情况:Replace Nested Conditional with Guard Clauses 去除讨厌的控制标记:Remove Con... 阅读全文
posted @ 2012-04-06 14:44 川山甲 阅读(3304) 评论(23) 推荐(6) 编辑

摘要:思维导图介绍承接上文的PHP 杂谈《重构-改善既有代码的设计》之 重新组织你的函数继续重构方面的内容。这章主要针对数据的重构。1、争论的声音——直接访问Field还是通过函数(Accessor)访问Field2.修改Array为Object:当你看到一个Array很像一个数据结构,你可以使用Replace Array with Object,把Array变成一个对象。——数据结构更清晰。专业术语accessor:访问者,存储器——在本文翻译为“函数”dumb:哑domain class:用以处理业务逻辑presentation class:用以处理”数据表现形式“business logic: 阅读全文
posted @ 2012-04-04 17:47 川山甲 阅读(2855) 评论(8) 推荐(6) 编辑

摘要:思维导图索引:ØMove Method(搬移函数)Ø Move Field (搬移值域)Ø Extract Class (提炼类)Ø Inline Class (将类内联化,就是把当前的类合并到其他类中)Ø Hide Delegate (隐藏委托关系)Ø Remove Middle Man ( 移除中间人)Ø Introduce Foreign Method (引入外加函数)Ø Introduce Local Extension (引入本地扩展)介绍承接上文PHP 杂谈《重构-改善既有代码的设计》之 重新组织你的函 阅读全文
posted @ 2012-04-01 00:21 川山甲 阅读(3838) 评论(3) 推荐(6) 编辑

摘要:思维导图点击下图,可以看大图。介绍我把我比较喜欢的和比较关注的地方写下来和大家分享。上次我写了篇《php 跟老大的对话》。还是有很多疑问,这书帮了我不少的忙。如果你比较繁忙,或者懒得看文字,建议你直接看截图,也会有很大的收获的。你可以通过比较截图中的代码就能知道孰优孰劣了。代码部分我为什么用图呢?因为我经常用手机看代码,博客园的代码在手机里乱七八糟的,还是看图比较舒服。专业术语我们毕竟是用英文字母编码,所以用一些英语单词,更能显示出我们的专业性。以下的英文单词,你如果掌握了,与其他coder交流的时候会更直接,更专业。——臭显摆一下吧,呵呵。“*”表示文中经常提到的inline:内联funct 阅读全文
posted @ 2012-03-31 12:17 川山甲 阅读(10552) 评论(6) 推荐(12) 编辑

摘要:介绍对于php性能问题,议论最多的就是__autoload()方法,很多人提到这个方法非常影响性能。还有人说opcode也能影响到__autoload()方法,所以针对这两点我做了个测试。最终发现__autoload方法在性能方面的影响不是很大的。有的网友说不用__autoload(),带来的维护成本比性能成本高无数倍(比较赞同)。 环境PHP:5.3.9 ——以fastcgi模式启动Nginx:1.1.12eaccelerator:0.9.6.1截图:启动界面:eAccelerator(在php.ini文件中)配置情况: 文件结构:(每一个Test文件都是6000多行代码的文件)测试:带着e 阅读全文
posted @ 2012-03-29 11:59 川山甲 阅读(4526) 评论(11) 推荐(3) 编辑

摘要:思维导图介绍 叫老大不光是因为职位比我高,还因为技术也让人佩服! 今天跟老大聊聊我们一些代码结构的问题,有些可能会对你是有帮助的。如果大家有不同的看法,可以提出来,一起讨论一下。对话1>单个文件巨大(超过5000行)我:文件大会不会影响性能啊?PHP语言在处理源文件的时候(这个主要是php的词法分析和语法分析),会将源文件切分为一个一个的标记(token)。如果文件很大的话,把我们当前不需要的方法都会做标记的,这样不是明显影响性能吗?老大:这个在性能方面的影响是比较小的。我们在考虑性能的时候,要考虑全局观,比如展示页面的时候,打开页面很慢,那我们首先考虑的就不是文件大小的问题,而是每个模 阅读全文
posted @ 2012-03-21 06:07 川山甲 阅读(6924) 评论(24) 推荐(20) 编辑

摘要:命名规范Θ 类文件都以.class.php为后缀,使用驼峰法命名,并且首字母大写,例如 Pay.class.php;Θ 类名和目录_文件名一致。例如:类名Zend_Autoloader的目录是Zend/Autoloader.class.php;Θ 函数的命名使用小写字母和下划线的方式。例如:get_client_ip;Θ 方法的命名使用驼峰法,首字母小写或者使用下划线"_",例如listComment(),_getResource(),通常下划线开头的方法属于私有方法;Θ 属性的命名使用驼峰法,首字母小写或者使用下划线"_",如$username,$_i 阅读全文
posted @ 2012-03-08 16:43 川山甲 阅读(3984) 评论(7) 推荐(9) 编辑

摘要:介绍今天发现php5.1.*和php5.2.*在数据库预编译代码执行的时候出现差异。预编译优点1.使用占位符,避免逐字输入数据到SQL中。自动处理引号和反斜线等字符的转义——增加安全性。2.预先“准备”一条语句,然后在每次执行时绑定不同值达到重用的目的。——常用于以后被多次执行的语句。3.可读性强。代码数据库连接代码都一样.$protol = 'mysql:host=localhost;dbname=test';$username = 'monty';$passwd = '0818';$dbh = new PDO($protol, $userna 阅读全文
posted @ 2012-03-05 13:19 川山甲 阅读(4540) 评论(4) 推荐(5) 编辑

点击右上角即可分享
微信分享提示