
php
涂荼
学习
展开
-
Liskov Substitution Principle 里氏替换原则
Liskov Substitution Principle 里氏替换原则Introduction 介绍Don’t worry, the Liskov Substitution Principle is a lot easier to understand than it sounds. This principle states that you should be able to u...转载 2017-06-06 17:03:48 · 581 阅读 · 0 评论 -
Application Structure 应用结构
Application Structure 应用结构Introduction 介绍Where does this class belong? This question is extremely common when building applications on a framework. Many developers ask this question because they...转载 2017-06-06 16:59:17 · 1340 阅读 · 0 评论 -
Service Providers 服务提供者
Service Providers 服务提供者As Bootstrapper 他是引导程序A Laravel service provider is a class that registers IoC container bindings. In fact, Laravel ships with over a dozen service providers that manage t...转载 2017-06-06 16:58:33 · 1592 阅读 · 0 评论 -
Interface As Contract 接口约定
Interface As Contract 接口约定Strong Typing & Water Fowl 强类型和小鸭子In the previous chapters, we covered the basics of dependency injection: what it is; how it is accomplished; and several of benefi...转载 2017-06-06 16:56:40 · 1632 阅读 · 0 评论 -
The IoC Container 控制反转容器
The IoC Container 控制反转容器Basic Binding 基础绑定Now that we’ve learned about dependency injection, let’s explore inversion of control containers. IoC containers make managing your class dependencies m...转载 2017-06-06 16:55:47 · 943 阅读 · 0 评论 -
Dependency Injection 依赖注入
Dependency Injection 依赖注入The Problem 遇到的问题The foundation of the Laravel framework is its powerful IoC container. To truly understand the framework, a strong grasp of the container is necessary. ...转载 2017-06-06 16:54:35 · 804 阅读 · 0 评论 -
PHP JSON_ENCODE 不转义中文汉字的方法
iOS程序中不识别读取到的JSON数据中 \u开头的数据。 PHP 生成JSON的时候,必须将汉字不转义为 \u开头的UNICODE数据。 网上很多,但是其实都是错误的,正确的方法是在json_encode 中加入一个参数 JSON_UNESCAPED_UNICODE json_encode($data, JSON_UNESCAPED_UNICODE); //必须PHP5.4+官网的说明:htt原创 2017-05-05 11:14:07 · 467 阅读 · 0 评论 -
Laravel Facade 实现原理揭秘
在使用Laravel 框架的时候会看到很多 Cache::get() 这样的用法,称之为 Facade,门面。 但是代码中即没有看到使用 Cache 相关的命名空间,且在 Composer 自动加载中也没有相关的自动加载规则。那这是如何实现的呢?让我们从框架源码去发现。Laravel 的入口文件是 public/index.PHP,此文件载入了 autoload.php, app.php 2个文件转载 2017-04-11 20:55:55 · 688 阅读 · 0 评论 -
Yii2 输出xml格式数据的方法
php中对xml的处理,虽然说实际开发中目前用的少了,但是难免会用到,用到的时候呢,总结起来还是稍稍有那么一丁点的麻烦。 我们来看看yii2中是怎么对xml进行处理的。会超乎你想象的简单哦。 我们以输出xml格式的数据为例。 既然是输出,必然就涉及到web请求与响应了,不熟悉的可以先去了解下HTTP协议。 yii2中支持以下几种返回格式,均可自定义配置。 HTML: implemented转载 2017-03-15 08:36:31 · 1294 阅读 · 0 评论 -
PHP开启opcache方法
说明PHP 5.5+版本以上的,可以使用PHP自带的opcache开启性能加速(默认是关闭的)。对于PHP 5.5以下版本的,需要使用APC加速,这里不说明,可以自行上网搜索PHP APC加速的方法。 PHP开启opcache方法1、打开php.ini文件2、找到:[opcache],设置为:[opcache]; dll地址zend_extension=php_opcache.dll转载 2017-03-14 14:18:44 · 470 阅读 · 0 评论 -
unset注意细节
(PHP 4, PHP 5, PHP 7) unset — 释放给定的变量说明 ¶ void unset ( mixed var[,mixedvar [, mixed … ] )unset() 销毁指定的变量。unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset()转载 2017-03-07 17:29:11 · 1403 阅读 · 0 评论 -
Applied Architecture Decoupling Handlers 实用做法:解耦处理函数
Applied Architecture Decoupling Handlers 实用做法:解耦处理函数Introduction 介绍Now that we have discussed various aspects of sound application architecture using Laravel 4, Let’s dig into some more specific...转载 2017-06-06 16:59:54 · 587 阅读 · 0 评论 -
Extending The Framework 扩展框架
Extending The Framework 扩展框架Introduction 介绍Laravel offers many extension points for you to customize the behavior of the framework’s core components, or even replace them entirely. For example, ...转载 2017-06-06 17:00:42 · 529 阅读 · 0 评论 -
laravel依赖注入原理
laravel依赖注入浅析laravel容器包含控制反转和依赖注入,使用起来就是,先把对象bind好,需要时可以直接使用make来取就好。 具体分析参照:http://laravelacademy.org/post/769.html通常我们的调用如下。$config = $container->make('config');$connection = new Connection($this-转载 2017-06-07 11:17:04 · 5553 阅读 · 0 评论 -
Interface Segregation Principle 接口隔离原则
Interface Segregation Principle 接口隔离原则Introduction 介绍The Interface Segregation principle states that no implementation of an interface should be forced to depend on methods it does not use. Have...转载 2017-06-06 17:04:21 · 606 阅读 · 0 评论 -
Dependency Inversion Principle 依赖反转原则
Dependency Inversion Principle 依赖反转原则Introduction 介绍We have reached our final destination in our overview of the five SOLID design principles! The final principle is the Dependency Inversion pri...转载 2017-06-06 17:04:45 · 806 阅读 · 0 评论 -
Open Closed Principle 开放封闭原则
Open Closed Principle 开放封闭原则Introduction 介绍Over the life time of an application, more time is spent adding to the existing codebase rather than constantly adding new features from scratch. As yo...转载 2017-06-06 17:01:57 · 530 阅读 · 0 评论 -
Single Responsibility Principle 单一职责原则
Single Responsibility Principle 单一职责原则Introduction 介绍The “SOLID” design principles, articulated by Robert “Uncle Bob” Martin, are five principles that provide a good foundation for sound applica...转载 2017-06-06 17:01:26 · 542 阅读 · 0 评论 -
在PHP中使用协程(yield )实现多任务调度
PHP5.5一个比较好的新功能是加入了对迭代生成器和协程的支持。对于生成器,PHP的文档和各种其他的博客文章已经有了非常详细的讲解。协程相对受到的关注就少了,因为协程虽然有很强大的功能但相对比较复杂, 也比较难被理解,解释起来也比较困难。 这篇文章将尝试通过介绍如何使用协程来实施任务调度, 来解释在PHP中的协程。迭代生成器 生成器也是一个函数,不同的是这个函数的返回值是依次输出,而...转载 2017-02-20 17:30:50 · 5825 阅读 · 1 评论 -
在 PHP 中养成 7 个面向对象的好习惯
在 PHP 编程早期,PHP 代码在本质上是限于面向过程的。过程代码 的特征在于使用过程构建应用程序块。过程通过允许过程之间的调用提供某种程度的重用。 但是,没有面向对象的语言构造,程序员仍然可以把 OO 特性引入到 PHP 代码中。这样做有点困难并且会使代码难于阅读,因为它是混合范例(含有伪 OO 设计的过程语言)。使用 PHP 代码中的 OO 构造 — 例如能够定义和使用类、能够构建使用继承的转载 2017-10-11 10:38:19 · 481 阅读 · 0 评论 -
【PDO扩展】lastInsertId函数返回0的原因
【PDO扩展】lastInsertId函数返回0的原因 问题在使用PHP的PDO扩展插入数据的时候,有时候需要获取到最后插入记录的ID作为返回信息。要怎么才能实现这个需求呢?lastInsertId函数 使用PDO的lastInsertId函数。但是,最近在使用的过程中发现有时候lastInsertId函数返回的是0。为什么会这样呢?先来看看lastInsertId函数在PHP转载 2017-09-03 09:04:27 · 1789 阅读 · 0 评论 -
php BC高精确度函数库
php BC高精确度函数库 php BC高精确度函数库 php bc math 包含了:相加,比较,相除,相减,求余,相乘,n次方,配置默认小数点数目,求平方; 这些函数在涉及到有关金钱的计算时比较有用 两个高精度数比较 工作中遇到一种情况,0.00 != 0 int bccomp ( string leftoperand,stringl...转载 2017-07-27 17:53:50 · 593 阅读 · 0 评论 -
SWOOLE编程细节知识
注意事项不要在代码中执行sleep以及其他睡眠函数,这样会导致整个进程阻塞 exit/die是危险的,会导致worker进程退出 可通过register_shutdown_function来捕获致命错误,在进程异常退出时做一些请求工作,具体参看/wiki/page/305.html PHP代码中如果有异常抛出,必须在回调函数中进行try/catch捕获异常,否则会导致工作进程退出 sw...转载 2017-03-07 15:59:05 · 655 阅读 · 0 评论 -
关于静态方法与非静态方法的执行效率
以前看到许多网友认为静态方法要比实例方法在执行效率上要快一些,当初不敢苟同。自己亲自试了一把,发现静态方法确实要快一些。 想要比较静态方法与非静态方法的执行效率,需要对CLR在调用静态方法与非静态方法时的不同之处要有一个了解。 静态方法是与类相关联的,CLR在调用一个静态方法时需要做的事情就是找到定义该方法的类型即可实现调用;而在调用非静态方法时,为了保证运行安全,CLR会对我们的源代码进行转载 2017-03-07 10:47:59 · 812 阅读 · 0 评论 -
php中使用apcu实现共享数据
apcu前身是apc,大家知道apc缓存分为系统缓存和用户缓存,他们的区别是什么呢? 1、系统缓存是指php执行时增加缓存,减少php文件的反复检查和编译,从而达到系统加速的效果。 2、用户缓存是指,php代码中将数据写入缓存,是用户写入的数据,通过key和value的键值方式插入和读取。这种数据叫做用户缓存。php5.5以后,opcache将代替apc做为php加速的位置,也...转载 2016-07-15 11:01:44 · 6478 阅读 · 0 评论 -
PHP X-sendfile实现文件下载
项目中涉及到文件的下载功能,通常PHP文件下载都是将文件先读取出来然后发送相应头文件进行下载。如:$file_dir = $instance->_attach_path.Helper_Hash::hashDIR($id).$attach['path'];if(!file_exists($file_dir)){ throw new FromMeException('文件不存在');}e原创 2016-07-14 10:22:43 · 1620 阅读 · 0 评论 -
PHP实现对象属性按数组方式访问
主要思路实现ArrayAccess接口和__get,__set魔术方法class ArrObject implements ArrayAccess { private $_data; public function __construct($data){ $this->_data = $data; } public function offsetGe原创 2016-07-13 15:18:01 · 5871 阅读 · 0 评论 -
Ice::SocketException { error = 13 }
centos6.5 ice通过Apache运行报错Ice::SocketException { error = 13 }解决方法:关闭防火墙/etc/rc.d/init.d/iptables stop原创 2015-09-02 12:01:05 · 1488 阅读 · 0 评论 -
php 怎样读取指定目录下面的所有文件?
function treeDirectory($dir) { $files = array(); $dirpath = realpath($dir); $filenames = scandir($dir); foreach ($filenames as $filename) { if ($filename=='.' || $filename=原创 2015-06-15 08:29:25 · 513 阅读 · 0 评论 -
php curl如何使用以及如何使用代理服务器
使用PHP cURL可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容,PHP cURL是一个功能强大的PHP库。本文主要讲述如果使用这个PHP库。启用PHP cURL设置首先,我们得先要确定我们的PHP是否开启了这个库,你可以通过使转载 2015-06-15 08:24:36 · 7146 阅读 · 0 评论 -
php正则表达式的基本语法
首先,让我们看看两个特别的字符:’^’ 和 ‘$’ 他们是分别用来匹配字符串的开始和结束,一下分别举例说明“^The”: 匹配以 “The”开头的字符串; “of despair”:匹配以“ofdespair”结尾的字符串;“abc”: 匹配以 “of despair” 结尾的字符串; “^abc”: 匹配以abc开头和以abc结尾的字符串,实际上是只有abc与之匹配 “notice”转载 2015-05-19 22:26:59 · 479 阅读 · 0 评论 -
PHP simplexml 对xml的增删改操作
simplexml 是php 处理xml 文件的一个方法,另一个是dom 处理,这里只说simplexml 。 目前php 处理xml用的比较多,比较成熟的还是dom 。但dom 在速度和代码量上还是比较受人诟病的。 simplexml 的有些函数需要比较高版本的php,建议是php5.2 以上。一,新建xml方法1 (普通新建文件):$fp=fopen('111.xml','w'); $x原创 2015-05-19 09:54:45 · 936 阅读 · 0 评论 -
php怎样清除浏览器缓存
header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" ); header("Cache-Control: no-cache, must-revalidate" );原创 2015-05-19 22:15:37 · 3805 阅读 · 0 评论 -
Zend Framework 跳转方法(render, forward, redirect)区别与总结
一. render(最常见的,只能在当前控制器使用,用于跳转到不同的视图)不指定render 结果: {当前Module}/{当前Controller}/{当前Action}.phtml$this->render('bar');结果: {当前Module}/{当前Controller}/bar.phtml二. forward(重要,主要用于不同的控制器之间跳转)在任意的pre/postDispat原创 2015-05-18 21:04:11 · 680 阅读 · 0 评论 -
PHP使用CURL_MULTI实现多线程采集的例子
这两天有一客户定制了一个免登录发布模块,因为在模块中需要涉及到很多图片下载的问题,考虑到性能问题,所以特别写了一个CURL_MULTI远程采集网页的函数,以方便以后使用,估计以后都不会使用原来的单线程curl函数去foreach了,其性能对比很明显的。同样获取我的博客的十个不同网页,curl_multi:4.5246081352234,file_get_contents:33.00179791450转载 2017-02-20 16:40:37 · 2822 阅读 · 0 评论 -
Swoole编译安装
编译安装 Swoole扩展是按照php标准扩展构建的。使用phpize来生成php编译配置,./configure来做编译配置检测,make进行编译,make install进行安装。请下载releases版本的swoole,直接从github主干上拉取最新代码可能会编译不过 如果当前用户不是root,可能没有php目录的写权限,安装时需要sudo或者su 如果是在git分支上直接git...转载 2017-02-20 16:46:33 · 669 阅读 · 0 评论 -
php 使用callable强制指定回调类型
如果一个方法需要接受一个回调方法作为参数,我们可以这样写<?phpfunction dosth($callback){ call_user_func($callback);}function callback(){ echo 'do sth callback';}dosth('callback');输出: do sth callback 但我...转载 2017-02-20 17:15:03 · 729 阅读 · 0 评论 -
PHP函数的实现原理及性能分析
转载出处:http://www.cnblogs.com/ghj1976/archive/2010/08/27/1809766.html前言在任何语言中,函数都是最基本的组成单元。对于php的函数,它具有哪些特点?函数调用是怎么实现的?php函数的性能如何,有什么使用建议?本文将从原理出发进行分析结合实际的性能测试尝试对这些问题进行回答,在了解实现的同时更好的编写php程序。同时也会对一些常见的ph转载 2017-03-07 10:26:05 · 422 阅读 · 0 评论 -
深入理解PHP内存管理之谁动了我的内存
首先让我们看一个问题: 如下代码的输出,var_dump(memory_get_usage());$a = "laruence";var_dump(memory_get_usage());unset($a);var_dump(memory_get_usage());输出(在我的个人电脑上, 可能会因为系统,PHP版本,载入的扩展不同而不同): int(90440) ...转载 2017-03-10 10:42:27 · 238 阅读 · 0 评论 -
PHP数组实现栈和队列:push,pop,shif,unshift
尽管在PHP中允许直接访问某个数组单元,但PHP仍提供了各种有趣的方式来处理数组。特别要说的是,某些函数使PHP数组非常容易的实现了一个栈或队列。array_pop这个array_pop函数会删除并返回数组的最后一个元素。 在下面的这个例子中,你将会看到在给定一个数组的3个元素中,如何删除最后一个元素的值(索引最大的元素)并返回这个值。$stack = array("orange", "banan原创 2017-03-10 09:01:52 · 4752 阅读 · 0 评论