php笔记
Yee Jason
这个作者很懒,什么都没留下…
展开
-
tp5.1 路由执行解析 (六)
1、为什么可以直接使用 Route::get 调用呢? 因为这个是执行的 facade门面模式,就不具体说了,接下来看具体代码的流程Route::get('hello/:name', 'index/hello');2、定位到 get 方法,第一个参数是路由规则,第二个是路由地址等等,发现最后都是定位到了 rule 方法, /** * 注册GET路由 ...原创 2019-07-20 23:39:33 · 1554 阅读 · 0 评论 -
php设计模式(七)适配器模式
把对某些相似的类的操作转化为一个统一的“接口”(这里是比喻的说话)--适配器,或者比喻为一个“界面”,统一或屏蔽了那些类的细节。适配器模式还构造了一种“机制”,使“适配”的类可以很容易的增减,而不用修改与适配器交互的代码,符合“减少代码间耦合”的设计原则。 interface signle{ public function config(); public funct...原创 2019-02-09 17:05:39 · 121 阅读 · 0 评论 -
php设计模式(六)桥接模式
作用:将两个不相关的类结合在一起,通过两个类中的方法和属性,得到新的功能// 讲师分配abstract class Students{ abstract public function classroom();}class OpenStudents extends Students{ public function classroom() { ...原创 2019-02-09 17:03:52 · 137 阅读 · 0 评论 -
php设计模式(五)装饰器模式
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 * 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 * 我们通过下面的实例来演示装饰器模式的用法。其中,我们将把一个形状装饰上不同的颜色,同时又不改变形状类。 * 优点:装饰...原创 2019-02-09 15:24:41 · 136 阅读 · 0 评论 -
php设计模式(四)职责链模式
<?php/** * Created by PhpStorm. * User: insei * Date: 2019/1/27 * Time: 7:44 PM */// 职责链模式(又叫做责任链模式) 包含了一些命令对象和一些处理对象,每个处理对象决定它能// 出来那些对象,它也知道把自己不能处理的命令交给下一个处理对象,该模式还描述了往该链添加// 新的处理对象方法。...转载 2019-01-27 21:04:09 · 170 阅读 · 0 评论 -
php设计模式(三)观察者模式
//不同的对象,会有不同的处理方式/** * 场景:一个事件发生后,要执行一连串更新操作.传统的编程方式, * 就是在事件的代码之后直接加入处理逻辑, * 当更新得逻辑增多之后,代码会变得难以维护.这种方式是耦合的 * ,侵入式的,增加新的逻辑需要改变事件主题的代码 * 观察者模式实现了低耦合,非侵入式的通知与更新机制。 */interface Wemessage{ ...原创 2019-01-27 02:20:50 · 104 阅读 · 0 评论 -
php设计模式(二)工厂模式
/** * Interface Db * * 面向接口,只需要知道接口的调用,不需要知道接口具体的实现 * * 在php里面就有好几种方法,mysql扩展,mysqli扩展,PDO扩展。 * 我就是想要一个对象用来以后的操作,具体要哪个,视情况而定喽。 * 既然你们都是连接数据库的操作, * 你们就应该拥有相同的功能, * 建立连接,查询,断开连接...(此处显示接口的重要性)...原创 2019-01-27 01:18:36 · 119 阅读 · 0 评论 -
Mac将本地文件上传到服务器上
打开终端,输入命令:例如:scp Downloads/php-7.2.11tar.bz2 [email protected]:/home/tmpscp 上传命令Downloads/php-7.2.11tar.bz2 表示本地上准备上传文件的路径和文件[email protected] 表示使用root用户登录远程服务器39.105.166.xx:/home...原创 2018-10-24 23:37:46 · 10458 阅读 · 1 评论 -
php (性状)
什么性状?性状是类的部分实现(既常量,属性和方法),可以混入一个或多个现有的php类中。 * 性状有两个作用:表明类可以做什么(像是接口),提供模块化实现(像是类)。 为什么使用性状? php语言使用一中典型的继承模型。在这种模型中,我们先编写一个通用的跟类,实现 基本的功能,然后扩展这个类,创建更具体的类,从直接父类继承实现。这叫做继承 层次结构,很多变成语言都使用了这个...原创 2018-10-23 22:19:06 · 710 阅读 · 0 评论 -
tp5.1 配置文件分析 (二)
一、 学习内容 1、Array Access 学习笔记。 2、Yaconf 高性能配置 学习。2、配置加载流程图3、config 类库分析1、在 index.php 入口文件中 有个 run 方法 // 初始化应用 $this->init();2、在 run 方法中有个 初始化方法 initizlize方法//...原创 2019-06-25 22:17:53 · 1340 阅读 · 0 评论 -
php底层ArrayAccess类巧用分析
一、作用:提供像访问数组一样访问对象的能力接口。二、 方法: 1、offsetExists 检查偏移位置是否存在 2、offsetGet 获取一个偏移位置的值。 3、offsetSet 设置一个偏移位置的值。 4、offsetUnset 删除一个偏移位置的值。三、代码测试class ObjArray impl...原创 2019-06-25 22:38:01 · 400 阅读 · 0 评论 -
tp5 框架执行流程、初始化应用(五)
1、执行 index.php 文件中的以下代码,在经过上述文章容器的学习,得知 app 对应返回的 是 think/App 类// 执行应用并响应Container::get('app')->run()->send(); 2、 在 run 方法中,第一步执行初始化应用 $this->initialize() 方法 if ($th...原创 2019-07-20 22:40:32 · 1267 阅读 · 0 评论 -
php 反射机制
一、介绍 PHP5添加了一项新的功能:Reflection。这个功能使得phper可以reverse-engineer class, interface,function,method and extension。通过PHP代码,就可以得到某object的所有信息,并且可以和它交互。 反射是什么?它是指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、方法、属性、参数等的...原创 2019-07-01 11:50:25 · 1080 阅读 · 0 评论 -
php设计模式(八 ) 注册树模式
注册树模式(Registry Pattern ):注册树模式为应用中经常使用的对象创建一个中央存储器来存放这些对象 —— 通常通过一个只包含静态方法的抽象类来实现(或者通过单例模式)。也叫做注册器模式1、为什么需要注册树模式解决常用对象的存放问题,实现类似于全局变量的功能。 2、代码实现class Register{ /** ...原创 2019-07-01 11:40:28 · 191 阅读 · 0 评论 -
tp5.1 IOC容器解析(三)
一、学习内容1、单列模式。2、注册树模式。3、php 反射机制。二、容器中图分解Container.png大体上就这么几点:1、设计模式:单列模式、注册数模式。2、php 反射思想(对应的方法)。3、依赖注入。三、分析主要的几个方法 1、get方法 =》make方法 /** * 获...原创 2019-07-03 22:58:01 · 921 阅读 · 0 评论 -
tp5.1 Facade - 门面(四)
作用门面为容器中的类提供了一个静态调用接口,相比传统了静态方式调用,带来了更好的可测试性和扩展性。 代码使用 (这样写可以直接调用)两段代码执行的结果一样,实际执行的是在\think\Facade\Config$apps = \Config::get('app.');halt($apps);$apps = \think\Facade\Config::get('ap...原创 2019-07-07 23:42:35 · 1208 阅读 · 0 评论 -
__callStatic 学习
介绍:当类调用静态方法是,并且调用的方法不存在时,会调用 __callStatic 方法类代码:class Test{ public static function __callStatic($name, $arguments) { dump($name); dump($arguments); }}调用代码:...原创 2019-07-07 23:22:11 · 320 阅读 · 0 评论 -
tp5.1 Loader自动加载分析(一)
1、加载流程图 1、框架启动执行 index.php // 加载基础文件require __DIR__ . '/../thinkphp/base.php'; 2、加载 Loader.php,并执行 register 方法// 载入Loader类require __DIR__ . '/library/think/Loader.php';//...原创 2019-06-22 18:06:10 · 3136 阅读 · 0 评论 -
Yaconf 高性能配置
1、简介:一个高性能配置扩展管理 yaconf.so2、 链接:Yaconf – 一个高性能的配置管理扩展3、高性能yaconf 编译安装 1、https://github.com/laruence/yaconf点击连接 2、wget https://github.com/laruence/yaconf.git 或者直接download下载yacon...原创 2019-06-25 23:10:00 · 564 阅读 · 0 评论 -
yii2.0 安装advanced 模版(window)
1) 、执行 init.bat文件 解决办法:配置环境变量 把php.exe执行前的文件放入环境变量中 2、在控制台执行 php init 命令 开启php.ini 文件中的extension=php_openssl.dll 3、选择0 (开发模式) 选择yes4、安装完成5、配置数据库的连接 、密码等 建立数...原创 2017-08-15 16:23:30 · 264 阅读 · 0 评论 -
php 保留字段小数点后两位小数
$num = 1.8333333$num = round($num,2); // 1.83原创 2017-09-03 15:40:09 · 3593 阅读 · 0 评论 -
阿里云ECS服务器配置LAMP使用IP地址无法访问
1、根据阿里云的步骤进行安装成功lamp服务后,在外网访问不到。想到可能是apache服务没有启动,开启之后 还是访问不到,在想到可能是防火墙没有关闭,关闭之后还是访问不到。 最后通过查看 https://oss.aliyuncs.com/netmarket/d18fafe1-92ff-4e90-b1b0-6a5ef8ddf141.pdf ...原创 2017-09-10 21:36:57 · 1095 阅读 · 0 评论 -
new self() 和 new static() 的区别
1、new static()是在php5.3版本引入的新特性2、无论是 new static 还是 new self() 都是 new 一个对象3、这两个方法new 出来的对象 有什么区别呢?说白了就是new出来的到底是同一个类的实列还是不同类的实列 为了探究上面的问题、我们先上一段简单的代码 class Father{ public function getNew...翻译 2018-09-12 21:59:48 · 10103 阅读 · 0 评论 -
1、php的错误异常处理 (错误报告及级别的设置)
一、php程序的错误发生一般归属下面3个领域 1、语法错误 语法错误最常见,并且也容易修复,如:代码中遗漏一个分号,这类错误会阻止脚本的执行。 2、运行时的错误: 这种错误一般不会阻止php脚本的执行,但会阻止当前要做的事情,输出一条错误,但php脚本 会继续执行。 3、逻辑错误: 这种错误最麻烦,既不阻止脚本的执行,也不输出错误消息。 ...原创 2018-10-10 18:33:22 · 2113 阅读 · 0 评论 -
2、php的错误异常处理(自定义php的错误处理方式)
一、概述 自定义错误报告的处理方式,可以完全绕过标准的php错误处理函数,这样就可以按照自己定义的 格式打印错误报告,或改变错误报告打印的位置,以下几种情况可以考虑自定义错误处理。 1、可以记下错误的信息,及时发现一些生产环境出现的问题。 2、可以屏蔽错误。 3、可以控制错误的输出。 4、可以作为调试工具。二、使用set_error_hand...原创 2018-10-10 22:54:44 · 249 阅读 · 0 评论 -
3、php的错误异常处理(什么是php的异常处理)
异常(Exception)处理用于在指定的错误发生时改变脚本的正常流程。是PHP5中的一个新的重要特性。异常处理是一种可扩展、易维护的错误处理统一机制,并提供了一种新的面向对象的错误处理方式。异常处理格式: try{ 使用try去包含可能会发生异常的代码. 一旦出现异常try进行捕获异常,交给catch处理。 ...原创 2018-10-11 10:43:08 · 195 阅读 · 0 评论 -
4、php的错误异常处理(自定义异常类)
一、php自带的异常处理类:<?phpclass Exception { protected $message; // 异常信息 protected $code; // 用户自定义异常代码 protected $file; // 发生异常的文件名 protected $line; // 发生异常的代码行号 final private fu...原创 2018-10-11 11:20:12 · 4762 阅读 · 0 评论 -
php (生成器)
php 生成器(generator)是php5.5引入的功能,往往没被充分利用,其实这是非常有用的功能, 我相信很多的php开发者都不知道生成器,因为生成器的作用不是很明显,生成器是简单的迭代器,仅此而已。 与标准的php迭代器不同,php生成器不要求类实现 Iterator接口,从而减轻了类的负担,生成器会根据需求 计算并产出要迭代的值,这对应用的性能有重大的影响,试想一下。假如标...原创 2018-10-15 15:52:04 · 4186 阅读 · 1 评论 -
php 魔术方法 __invoke()
当尝试以调用函数的方式调用一个对象时,该方法会被自动调用class invoke{ public function __invoke($x) { var_dump($x); }}$obj = new invoke;$obj(10); /* 输出: int 10*/ ...原创 2018-10-16 22:43:48 · 13637 阅读 · 0 评论 -
php引用计数的基本知识
每个php变量存在一个叫"zval"的变量容器中。一个zval变量容器,除了包含变量的类型和值,还包括两个字节的额外信息。第一个是"is_ref",是个bool值,用来标识这个变量是否是属于引用集合(reference set)。通过这个字节,php引擎才能把普通变量和引用变量区分开来,由于php允许用户通过使用&来使用自定义引用,zval变量容器中还有一个内部引用计数机制,来优化内存使...转载 2018-10-11 18:25:14 · 118 阅读 · 0 评论 -
令人困惑的strtotime
$time = "2018-07-31";// 获取前一个月的日期echo date('Y-m-d', strtotime("$time - 1 month"));// 这里出现的居然是 2018-07-01 我们来模拟下date内部的对于这种事情的处理逻辑:1. 先做-1 month, 那么当前是07-31, 减去一以后就是06-31.2. 再做日期规范化, 因为6月没有3...转载 2018-09-12 12:07:52 · 151 阅读 · 0 评论 -
php 日期操作函数
PHP日期操作相关<?phpheader('content-type:text/html; charset=utf-8');$time = date('Y-m-d', time());echo "{$time}当前时间<hr>";echo date('Y-m-d', strtotime('next day')).'下一天<hr>';echo...原创 2018-09-12 11:38:21 · 610 阅读 · 0 评论 -
Nginx访问PHP提示 An error occurred.
解决办法:重新启动 php-fpm : systemctl restart php-fpm centos 7 命令 : systemctl start php-fpm systemctl stop php-fpm systemctl restart php-fpm systemctl reload php-fpm centos 6 命令 : serv...原创 2018-04-13 23:14:38 · 9209 阅读 · 0 评论 -
源码安装 php7
1) 在php官网 php.net 下载 php的压缩包 例如(php-7.2.4.tar.bz2) 2)tar jxvf php-7.2.4.tar.bz2 3)yum install gcc gcc++ libxml2-devel (php 的依赖包 ,为了防止后面编译出错) 4)cd php-7.2.4 目录中 (解压好的目录) 5) ./configure --pre...原创 2018-04-14 15:17:20 · 162 阅读 · 0 评论 -
PSR-2 代码风格规范
这篇规范是PSR-1(基本代码规范)的扩展和继承。本规通过制定一系列规范化PHP代码的规则,以减少在浏览不同作者的代码时,因代码风格的不同而造成不便。这个风格规范是从各种各样的项目的共性中延伸出来的。当多名程序员在多个项目中合作时,它有助于有一套准则,在所有的项目中使用。因此,本指南的好处不是在规则本身,而是在这些规则的共享。关键词 “必须”(“MUST”)、“一定不可/一定不能”...转载 2018-04-28 15:56:33 · 105 阅读 · 0 评论 -
restful api 简介
简介:1、面向资源的。2、http动词(get, post,put,delete)来描述操作3、api数据格式一般为 json 传统的api: 获取用户的信息 get /api/user/read 更新用户的信息 post /api/user/update 新增用户的信息 post /api/user/add 删除用户的信息 pos...原创 2018-05-08 15:34:02 · 1255 阅读 · 0 评论 -
php7 源码安装踩到的坑
1、在编译php源码安装时必须要安装 gcc gcc++ libxml2-devel 这些文件,防止make php7时报错 解决办法 : yum install gcc gcc++ libxml2-devel 2、源码安装php7时,没有php.ini文件。 解决办法: 1)进入解压php的文件中,会看到 一个文件 php.ini-developmen...原创 2018-05-09 09:38:30 · 454 阅读 · 0 评论 -
swoole Timer 毫秒定时器
定时器的原理: 定时器在实际的开发中非常常用,列如crontab就是一个非常常用的定时器,可以在指定的时间执行规定的任务,PHP本身也提pcntl_alarm,通过模拟时钟信号实现定时器,不过这些定时器都有一个缺点,不能精确到毫秒,还有比如执行一个任务,在某些特定的场合想关闭定时器,传统的php也实现不了这些功能。而swoole 弥补了这些缺点。swoole 的 swoole_tim...翻译 2018-05-18 10:53:54 · 3052 阅读 · 0 评论 -
php PSR-2 规范
<?php/** * 1.遵守psr-1的规范 * 2.文件准则 * (1).php 文件必须要以一个空白作为结束 * (2).纯的php代码文件必须省略最后的?> 结束标签 * 3.行准则 * (1)代码每一行应该保持在80个字符以上 * (2)理论上一定不能超过120个子字符 * (3)大于80个字符应该换成多行 * (4)非空行后面...原创 2018-09-04 22:15:06 · 870 阅读 · 0 评论 -
php设计模式(一)单例模式
<?php/** * 应用场景: * 数据库连接这种比较费资源的操作; * 我们希望整个应用只实列化一次 * * 结构: * 4私1公 * 私有化构造方法:防止使用 new 创建多个实列 * 私有化克隆方法: 防止clone多个实列 * 私有化重建方法:防止反序列化 * 私有化静态属性:防止直接访问存储实列的属性 */class Signle1{ p...转载 2018-09-08 15:12:07 · 4862 阅读 · 0 评论