
php
acmer1183
这个作者很懒,什么都没留下…
展开
-
将单词转换为它的复数形式
public function pluralize($name){ $rules=array( '/move$/i' => 'moves', '/foot$/i' => 'feet', '/child$/i' => 'children', '/human$/i' => 'humans', '/man$/i'原创 2014-11-25 20:34:05 · 1761 阅读 · 0 评论 -
php 把数组处理成csv格式
把数组转成csv格式的文件,以及从csv格式的文件读入都有php的内置函数支持fgetcsv/fputcsv读入一个csv格式的字符串也有str_getcsv可以办到,那么我想把一个数组变成csv格式的字符串呢?php里没有这样的函数。参考csv的数据格式定义,我们可以自己简单写个函数实现这个功能。<?phpclass CsvHelper { /** * 转义成cs原创 2015-03-31 13:17:32 · 1622 阅读 · 0 评论 -
php empty
参靠官方文档当一个变量没有定义,或变量的值等于false的时候,empty($val)返回true;相当于如下定义<?phpfunction empty($var) { return !isset($var) || $var == false;}值的注意的是,在php.5.5以前,参数只能是变量,之后参数可以是表达式了原创 2015-04-22 15:16:24 · 992 阅读 · 0 评论 -
php/lua 正则匹配多行 单行注释
<?php$s = '/*aaaasss*/*/';preg_match('@/\*.*?\*/@s', $s, $match);var_dump($match);输出array(1) { [0]=> string(13) "/*aaaasss*/"}php正则详细资粮参考地址原创 2015-03-30 14:24:05 · 4533 阅读 · 0 评论 -
php 给对象动态增加属性
示例代码<?phperror_reporting(-1);ini_set('display_errors','on');class A { public $a = 'hello'; public function add() { $this->b = 'world'; }- public static function p() {原创 2015-04-29 17:36:35 · 19911 阅读 · 0 评论 -
php 静态方法 静态变量和继承
代码<?phpclass A { public static $count = 1; public static function func() { echo __METHOD__,' count: ',self::$count,PHP_EOL; }}class B extends A { public static $count = 2;原创 2015-04-27 15:12:59 · 2491 阅读 · 0 评论 -
php array_merge与数组+运算符
<?php$a = array(1,3=>4,'a' => 'aa', 'b' => 'bb');$b = array(5, 'a' => 'a..', 'c' => 'c..');$c = $a + $b; var_dump($c);$c = array_merge($a,$b);var_dump($c);结果array(5) { [0]=> int(1) [原创 2015-05-04 17:40:54 · 388 阅读 · 0 评论 -
php 求解多项式
好久没有做过算法相关的东西了,最近一个同事问了一个算法相关的问题,问题描述如下:有这样一组排列对应关系,26个大写字符组成的字符串按字符序排序,短的比较小例A=>1,B=>2,。。。Z=>26,AA=>27,。。。AZ=52 。。。现在给出数字m,要找出对应的字符串是什么,如下1 => A , 27 => AA ...这个问题比较熟悉,以前遇到过,不过当时自己怎么解决的就原创 2015-05-05 17:58:06 · 446 阅读 · 0 评论 -
php hashtable的hash算法
/* * DJBX33A (Daniel J. Bernstein, Times 33 with Addition) * * This is Daniel J. Bernstein's popular `times 33' hash function as * posted by him years ago on comp.lang.c. It basically uses a funct原创 2015-05-16 20:12:10 · 446 阅读 · 0 评论 -
php 浮点数运算
php -r "echo (0.1+0.7) == 0.8 ?'true':'false';"了解浮点运算的都不难理解以上代码运行时会得到false;这是因为很多的10进制数都不能精确的转成2进制,或如果要精确转换的话需要的二进制数太长,会舍弃掉末尾部分,只保存一定的精度。比如0.1(十进制)=0.0001100 1100 1100{n} ...,0.7=0.101100 1100 110原创 2015-05-17 15:38:30 · 826 阅读 · 0 评论 -
php 函数记录
array_column提取二维数组的某一列,并可以用其它列作为返回数组的键值,第一个参数为空,返回整个数组,并用指定列作为键值。应用:从mysql数据库getall后,用指定键,比如主键列索引行,可用如下方式$data = array_column($data, $data, 'id');提取数组的某一列$column = array_column($data, 'col原创 2015-05-22 12:04:13 · 353 阅读 · 0 评论 -
php self
php类中的this,self,parentthis代表当前对象,self代表当前类,parent代表父类,这个解释很晦涩,下面结合例子具体说明一下selfphp类的定义和对象(实例)的存储是分开的,类的定义只有一份,实例可以有多个。self就代表类定义类的定义主要包括方法(类的属性可以动态添加),不严谨的说,方法是属于类的,属性是属于对象的。那么理论上通过类名就可以调用类的所有方原创 2015-06-09 13:12:30 · 373 阅读 · 0 评论 -
imagick 学习
php里有两个图片处理库gd,imagick,gd比较老,并且效果不如imagick好。最近一个项目需要在一个背景图上添加logo和文字,用了imagick来画<?phpclass Image{ private $image; private $logoWidth = 57;//logo宽度 private $logoXSpace = 48;//logo横向间隔原创 2015-06-09 22:59:15 · 497 阅读 · 0 评论 -
php 错误日志配置
php.ini;是否记录错误信息到日志;此项打开并且error_log文件可写,(注意运行php脚本的用户和日志文件的所有者)才会记录成功log_errors = On;默认路径是相对于脚本的执行路径,一般要写成绝对路径;error_log = php_errors.log error_log = /data/php/log/php_error.log原创 2015-08-12 11:32:06 · 1789 阅读 · 0 评论 -
php 大文件下载
在做运营后台的时候,不免会收到运营导出数据的需求,我们一般先从db里发数据取出来,做一些简单的数据。让后echo到server,再到浏览器。所以一般可能会这样class ConcreteController { public function actionDownload() { $request = new Request(); $model =原创 2015-03-31 14:32:17 · 506 阅读 · 0 评论 -
php 分页总结
每天用php做的最多的事差不多就是从db里取数据,展示数据了,有时以网页的形式(分页)展示,有时以csv格式导出数据。今天就对分页去数据做个总结。根Modelclass RModel { /** * @param $page array 分页对象 * @param $order string order by 排序 */ public fu原创 2015-03-31 13:51:25 · 402 阅读 · 0 评论 -
模板
叙述示例<?php/** * 模板方法模式: * 在抽象类中定义一个final 的模板方法,定义一个业务逻辑,使其不能被子类修改 * 具体的每个操作的方法声明为抽象方法,每个子类根据自己的业务定义自己的操作 * 钩子用来让子类控制父类的一部分逻辑 *//** * 抽象类 */abstract class AbstractBank{ private原创 2015-03-19 14:39:06 · 288 阅读 · 0 评论 -
职责链
叙述示例<?php/*** 职责链的组织可写在配置文件里* 每个职责类可对同一个请求选择性的处理,之后可交由下一个类处理,也可终止* 抽象出职责类 Handler,每个具体的职责类处理各自的事情*/abstract class Handler { protected $_handlerName = null; protected $_nextHand原创 2015-03-19 14:41:57 · 232 阅读 · 0 评论 -
装饰器
叙述待续示例代码<?phpabstract class Component { public abstract function execute();}class ConcerteComponent extends Component { public function execute() { // do something ..原创 2015-03-19 14:41:02 · 295 阅读 · 0 评论 -
代理
叙述示例<?phpinterface Weater { public function request($city); public function display($city); public function isValidCity($city);}class RealWeater implements Weater { prote原创 2015-03-19 14:34:39 · 266 阅读 · 0 评论 -
适配器
类适配<?phpinterface Target { public function hello(); public function world();}class Adaptee { public function greet() { print_ln(__METHOD__); } public function w原创 2015-03-19 14:45:34 · 230 阅读 · 0 评论 -
两则预防crontab重复执行任务策略
案例分析前台异步上传文件到云端后台cron*/10 * * * * /usr/local/bin/php /path/to/upload.php >> /tmp/apkqueue.log有时候上传一个文件到云端会很耗时,一个cron还没有跑完,下一个cron又开启了,并且一个文件可能被大于一个cron在同时上传。如果一个脚本的执行时间 比cron的间隔原创 2015-03-19 14:26:09 · 2691 阅读 · 0 评论 -
创建者
叙述示例<?php/*** 掌握生产步骤,生产工序(需要哪几步)*/class Director { public static function buildFood(Builder $builer) { $builer->hamburger(); $builer->drink(); return $builer原创 2015-03-19 14:36:49 · 361 阅读 · 0 评论 -
命令
叙述示例<?php/*** 抽象出命令,简化命令调用类的设计,并且命令本身可扩展* 与中介模式的区别是,中介模式是多对多对象通信的抽象,把多对多的关系转换成一对多,更容易维护* 并且减少了对象的数目* 命令模式是对调用对象方法的抽象,对命令的抽象,对命令的接收者没有改变,简化了命令的发出者的设计* 命令的发出者只对命令接口进行设计*/interface ICo原创 2015-03-19 14:37:56 · 289 阅读 · 0 评论 -
外观
叙述示例<?php/*** 外观类,封装子系统对外提供的接口* 只是封装接口,尽量不要在这个类里添加子系统的行为* 这里只是组合子系统的方法,拼接成一个完善的操作,以简化client对子系统的访问* 降低子系统和client之间的耦合*/class SwitchFacade { private $_light = null;原创 2015-03-19 14:38:30 · 267 阅读 · 0 评论 -
观察者
叙述示例<?php/** * 这一模式的概念是SplSubject类维护了一个特定状态,当这个状态发生变化时,它就会调用notify()方法。 * 调用notify()方法时,所有之前使用attach()方法注册的SplObserver实例的update方法都会被调用。 * */ /*interface SplSubject{ public func原创 2015-03-19 14:42:07 · 325 阅读 · 0 评论 -
autoload与全局变量
当使用autoload方法时,要格外注意变量的作用域。由于新文件是在_autoload函数里进行include,所以include 的“新文件”中的“全局变量”就成了_autoload函数的局部变量,只能在_autoload函数作用域内引用。在某种情况下可能会导致一些奇怪的现象。示例:autoload.php<?phpfunction __autoload($clas原创 2015-03-19 14:27:29 · 578 阅读 · 0 评论 -
策略
叙述示例<?php/*** 抽象算法,算法的选择交给Client*/interface TravelStrategy { public function travelAlgorithm();}class AirPlanelStrategy implements TravelStrategy { public function travelAlgor原创 2015-03-19 14:41:16 · 326 阅读 · 0 评论 -
访问者
叙述示例<?php/*** 对一组(不是一个,是一组)对象提供一种算法,算法可能会变,抽象出算法* 使得更换算法和新增算法可扩展* 需要每个访问者对每一个元素提供一个接口,对该元素提供一种访问算法,当新增元素时,违背了开闭原则* 如果元素种类不变,只对算法扩展,则会好点*/interface Visitor { public function visitG原创 2015-03-19 14:43:30 · 306 阅读 · 0 评论 -
利用array_walk做html编码处理
<?phpclass A { public $t1 = '1212'; public $t2 = '2222';}class Html { // public static function encode($txt, $charset='UTF-8') { // return htmlspecialchars($text,ENT_QUOTES,$ch原创 2015-03-23 22:32:08 · 415 阅读 · 0 评论 -
使用 php isset 遇到的问题
<?phpisset检测变量是否设置,且不是null,注意'\0'不是nullps:对数组中的元素同样有效 isset($arr['key'])问题来了,字符串也可用数组偏移量的方式访问$str[0],$str[1]看看实际中会遇到什么问题$url = 'xxx';$httBody = http_get($url); ///*$httBody = <<<EOF原创 2016-03-21 15:56:15 · 1342 阅读 · 0 评论