php框架

一次框架性能的比较,引起了我对搭建web框架的兴趣

喜你入骨 提交于 2019-12-18 08:07:36
背景 一次无意的访问,点击到了一个专门做PHP性能测试的网站,看这里 PHP Benchmarks 。 在里面发现了框架性能测试的结果,发现Laravel的框架性能尽然是最低的。瞬间受到了一万点的暴击,谁让最近一直用Laravel开发项目的呢。 说到底还是Laravel好用呀,方便不说,各方面支持的也不错,业务方面做的也是内部系统,哪怕性能慢点,也可以用前后端分离、负载均衡等手段解决掉,大体上也是够用。 不过,作为一个开发人员,理想还是要有的,这时就在想能不能采取Laravel框架的优点,用到什么就装什么,去掉一些请求到响应之间用不到的组件,精简框架。 之前也熟读过Laravel的源码,知道它的底层用的是Symfony的组件,毕竟没必要重复的造轮子。那么我们的框架之旅也将基于Symfony组件。。。 目录 一、Composer运行机制 二、框架前期准备 三、HttpFoundation组件封装Request、Response 四、路由处理 五、控制器处理相应功能(C) 六、分离模板(V) 七、分离模型(M) 八、剥离核心代码 九、优化框架 十、依赖注入(Dependency Injection) 正文 一、Composer运行机制 Composer的使用最关键的得益于 PHP标准规范 的出现,特别是其中的psr4, 自动加载规范 ,规范了如何指定文件路径从而自动加载类定义

PHP中PSR-[0-4]代码规范

£可爱£侵袭症+ 提交于 2019-12-18 07:44:25
PHP-FIG 在说啥是PSR-[0-4]规范的之前,我觉得我们有必要说下它的发明者和规范者:PHP-FIG,它的网站是: www.php-fig.org 。就是这个联盟组织发明和创造了PSR-[0-4]规范,膜拜吧,屌丝们! FIG 是 Framework Interoperability Group(框架可互用性小组)的缩写,由几位开源框架的开发者成立于 2009 年,从那开始也选取了很多其他成员进来,虽然不是 “官方” 组织,但也代表了社区中不小的一块。组织的目的在于:以最低程度的限制,来统一各个项目的编码规范,避免各家自行发展的风格阻碍了程序设计师开发的困扰,于是大伙发明和总结了PSR,PSR是Proposing a Standards Recommendation(提出标准建议)的缩写,截止到目前为止,总共有5套PSR规范,分别是: PSR-0 (Autoloading Standard) 自动加载标准 PSR-1 (Basic Coding Standard) 基础编码标准 PSR-2 (Coding Style Guide) 编码风格向导 PSR-3 (Logger Interface) 日志接口 PSR-4 (Improved Autoloading) 自动加载的增强版,可以替换掉PSR-0了。 接下来的篇目,我们会针对这5套,深入了解下

PHP 7.4.0发布!一起看看有哪些新特性

只谈情不闲聊 提交于 2019-12-18 04:17:30
PHP 7.4.0 发布了,此版本标志着 PHP 7 系列的第四次特性更新。 看了英文手册后,发现其进行了许多改进,并带来了一些新特性,现在将这些新特性您: 1. Typed Properties 类型属性 类属性现在支持类型声明,以下示例将强制 $User-> id 只能分配 int 值,而 $User-> name 只能分配 string 值。 <?php class User { public int $id; public string $name; } ?> ● 它们自PHP 7.4起可用。 ● 它们只在类中可用,并且需要访问修饰符:public、protected、private、var。 ● 除了void和callable之外,所有类型都是允许的。 PHP是我们喜欢和讨厌的一种动态语言,它将强制类型转换做的太好,有时也会引起反作用。假设您在期望整数的地方传递了一个字符串,PHP将尝试自动转换该字符串: class Bar { public int $i; } $bar = new Bar; $bar->i = '1'; // 1 如果不喜欢这种行为,可以通过声明严格类型来禁用它: declare(strict_types=1); $bar = new Bar; $bar->i = '1'; // 1 Fatal error: Uncaught TypeError:

PHP 底层的运行机制与原理

眉间皱痕 提交于 2019-12-17 02:23:51
PHP说简单,但是要精通也不是一件简单的事。我们除了会使用之外,还得知道它底层的工作原理。 PHP是一种适用于web开发的动态语言。具体点说,就是一个用C语言实现包含大量组件的软件框架。更狭义点看,可以把它认为是一个强大的UI框架。 了解PHP底层实现的目的是什么?动态语言要像用好首先得了解它,内存管理、框架模型值得我们借鉴,通过扩展开发实现更多更强大的功能,优化我们程序的性能。 1. PHP的设计理念及特点 多进程模型:由于PHP是多进程模型,不同请求间互不干涉,这样保证了一个请求挂掉不会对全盘服务造成影响,当然,随着时代发展,PHP也早已支持多线程模型。 弱类型语言:和C/C++、Java、C#等语言不同,PHP是一门弱类型语言。一个变量的类型并不是一开始就确定不变,运行中才会确定并可能发生隐式或显式的类型转换,这种机制的灵活性在web开发中非常方便、高效,具体会在后面PHP变量中详述。 引擎(Zend)+组件(ext)的模式降低内部耦合。 中间层(sapi)隔绝web server和PHP。 语法简单灵活,没有太多规范。缺点导致风格混杂,但再差的程序员也不会写出太离谱危害全局的程序。 2. PHP的四层体系 PHP的核心架构如下图: 从图上可以看出,PHP从下到上是一个4层体系: Zend引擎:Zend整体用纯C实现,是PHP的内核部分,它将PHP代码翻译(词法

require(): open_basedir restriction in effect. 解决方法

岁酱吖の 提交于 2019-12-16 17:56:54
https://www.cnblogs.com/blibli/p/8657736.html 在linux服务器部署thinkphp5的时候PHP报了这个错误, 如下: + View Code 解决方法: 我首先要申明的是,下面的方法适合所有报“PHP报:require(): open_basedir restriction in effect”错误的项目,并不仅仅只是适合thinkphp5的人。 只要你的PHP报此错误都可以得到解决。 如果把 ThinkPHP5 部署在了 LAMP/LNMP 环境上很有可能出现白屏的情况,这个时候需要开启 php 错误提示来判断是否是因为设置了 open_basedir 选项出错。 打开 php.ini 搜索 display_errors ,把 Off 修改为 On就开启了 php 错误提示,这时再访问之前白屏的页面就会出现错误信息。如果错误信息如下那么很有可能就是因为 open_basedir 的问题。 一、php.ini 修改方法 把权限作用域由入口文件目录修改为框架根目录 打开 php.ini 搜索 open_basedir ,把 1 open_basedir = "/home/wwwroot/tp5/public/:/tmp/:/var/tmp/:/proc/" 修改为 1 open_basedir = "/home/wwwroot/tp5

Swoole 是 PHP 中的 Node.js?

≯℡__Kan透↙ 提交于 2019-12-16 10:51:54
一想到那些可以使用 Node 的同事,一些 PHP 开发者的脸都嫉妒绿了。异步 Node 系统可以在不同协议间共享代码库,并在代码之外提供服务。这真的想让一个人转 Node 开发。实际上 PHP 中也有类似于 Node 的存在,并被列入了 PHP 拓展,叫做 Swoole。 PHP 中的 Node ?Swoole 到底是什么? 我先从 官方文档 中引用下 Swoole 的定义: Swoole:面向生产环境的 PHP 异步网络通信引擎。 使 PHP 开发人员可以编写高性能、可拓展的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务,而无需深入了解非阻塞 I/O 编程和初级 Linux 内核。 Swoole 使用 C 语言编写,作为 PHP 的 基本扩展 存在。听起来可还行,是吧?用 PHP 来运行 HTTP 服务?用 PHP 实现 Websockets ?还有其他的可能性,是不是很风骚?而且所有的这些都会保持极高的性能,我们来看看吧! 如何让它运行? 不同平台的安装方法有差异。 对于 Linux 来说,只需要运行一条 PECL 命令: pecl install swoole MacOS 用户可以使用 brew 命令: brew install swoole brew install homebrew/php/php72-swoole 译者注

PHP学习资源整理

戏子无情 提交于 2019-12-14 12:05:40
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 学习资源 PHP相关的有参考价值的社区,博客,网站,文章,书籍,视频等资源 PHP网站(PHP Websites) PHP The Right Way 一个PHP实践的快速参考指导 PHP书籍(PHP Books) Modern PHP – 作者是 PHP 之道 的发起人和 Slim框架 的作者 Modern PHP(中文版) 依赖管理( Dependency Management ) 用于依赖管理的包和框架 Composer / Packagist – 一个包和依赖管理器. Composer Installers – 一个多框架Composer库安装器 pickle – PHP扩展安装器 Melody – A tool to build one file Composer scripts. 框架( Frameworks ) Web开发框架 Symfony2 – 由独立组件构成的框架(SP2) Zend Framework 2 – 同样是由独立组件构成的框架(ZF2) Laravel 5 – 简洁优雅的PHP Web开发框架(L5) Aura PHP – 独立组件的框架 Yii2 – 用于开发大型Web应用的高性能PHP框架 Nette – 同样是由独立组件构成的框架 PPI Framework 2 –

PHP原生实现简易的MVC框架

邮差的信 提交于 2019-12-13 22:41:12
目录结构: —|controller —|Home.php —|model —|view —|welcome.php —|index.php 基本原理: 首页 index.php 通过获得地址栏中的路由名称获得对应控制器以及控制的方法名,通过require引入到index.php首页中。通过引入的对应控制器的类实例化一个对象,对象调用路由地址映射的方法,实现对视图层的调用显示。 实现具体代码: /index.php 首页代码实现: <?php​# 获取当前的服务地址$server = $_SERVER;​#获取到当前访问的主机名之后的URI$path = $server['REQUEST_URI']; # /test/index.php/home/welcome​$path = ltrim($path, '/'); # 去掉获得的路径前的 /$controller_method = explode('/', $path); # 根据 / 获得分割数组来取得控制器名字和对应方法$controller = ucfirst($controller_method[2]); # 将控制器名字的第一个更换为大写$method = $controller_method[3]; # 对应的方法名require_once __DIR__.'/controller/'.$controller.'

PHP高性能分布式应用服务器框架-SwooleDistributed

元气小坏坏 提交于 2019-12-13 21:21:15
选择SD框架助力企业开发 今年年底历时2年多的迭代,这是SD框架硕果满满的一年,通过不断的迭代和改进SD框架已经在圈内有良好的口碑,不少新生的框架借鉴了SD的设计思想,SD框架也被不少创业型公司和大型企业使用。 SD框架到底是什么技术 SD框架全称SwooleDistributed,从名称上看一个是Swoole一个是Distributed,他是基于Swoole扩展的可以分布式部署的应用服务器框架。 借助于PHP的高效开发环境,Swoole的高性能异步网络通信引擎,以及其他的高可用的扩展和工具,SD框架提供给广大开发者一个稳定的高效的而且功能强大的应用服务器框架。 入门成本 老实的说相对比目前热门的FPM框架来说,SD的入门成本相对还是比较高的,因为设计理念不同以及和传统PHP-FPM环境完全不同的运行环境,对于长时间使用LAMP(LANP)技术的开发人员来说会有一段时间的适应期,如果开发应用简单涉及到的系统复杂度低,那么SD上手还是比较容易,根据简单的例子和文档几乎立即就能开启SD的探索之旅,但是如果开发的是复杂的应用那么SD包含的众多组件还是需要你慢慢熟悉上手的。 SD框架到底包含哪些强大的功能呢 我们这里列举下SD提供的各种各样的功能以及模块组件 混合协议 SD框架支持长连接协议TCP,WebSocket,短连接协议HTTP,以及UDP。

回顾编程之路

泄露秘密 提交于 2019-12-13 07:40:37
本人从事开发(PHP编程)已有3年多,时间说长不长,但也不短。3年来自己对软件开发有一定了解。回顾3年走过的开发路程,才发现自己依然是井底之蛙,高不成,低不就。随着公司业务进行编程语言转换,PHP-(最优雅的语言)被Jave所取代。然而从事PHP 的几位同事就成了无价可归的码农。为了部落,为了维护最优雅的语言,苟且于测试部,听从测试指挥!作为一名开发语言被划分到测试部!测试部!!!!是一件多么可悲的一件事!呜呼哀哉!慢慢的发现测试不是一门简单的技术,里面所用到的知识,有些是自己不了解的。为了不甘于现状,只能多学技术。回顾3年来的编程之路,在这里怀念下。有些不好的地方,请大佬们不要谴责,我会慢慢的更进。 第1阶段:初级PHP程序员 1、学会搭建PHP 运行环境(LNMP/WAMP) 重点:把LNMP搞熟练(核心是安装配置基本操作) 目标:能够完成基本的LNMP环境安装,简单配置维护;能够做基本的简单系统的PHP开发;能够在PHP中型系统中支持某个PHP功能模块的开发。 时间:完成本阶段的时间因人而异,有的成长快半年一年就过了,成长慢的两三年也有。 2、 MySQL: 会自己搭建mysql,知道基本的mysql配置选项;知道innodb和myisam的区别,知道针对InnoDB和MyISAM两个引擎的不同配置选项;知道基本的两个引擎的差异和选择上面的区别