Zend Framework

一起聊聊PHP的几个设计模式

本小妞迷上赌 提交于 2020-08-09 04:26:28
工厂模式 1、简单工厂模式 目的 简单工厂模式是一个精简版的工厂模式 。 它与静态工厂模式最大的区别是它不是『静态』的。因为非静态,所以你可以拥有多个不同参数的工厂,你可以为其创建子类。甚至可以模拟(Mock)他,这对编写可测试的代码来讲至关重要。 这也是它比静态工厂模式受欢迎的原因! UML 图 代码 SimpleFactory.php Bicycle.php 用法 测试 Tests/SimpleFactoryTest.php 2、静态工厂模式 目的 与抽象工厂模式类似,此模式用于创建一系列相关或相互依赖的对象。 『静态工厂模式』与『抽象工厂模式』的区别在于,只使用一个静态方法来创建所有类型对象, 此方法通常被命名为 factory 或 build。 例子 Zend Framework: Zend_Cache_Backend 或 _Frontend 使用工厂方法创建缓存后端或前端 UML 图 代码 StaticFactory.php FormatterInterface.php FormatString.php FormatNumber.php 测试 Tests/StaticFactoryTest.php 3、抽象工厂模式 目的 在不指定具体类的情况下创建一系列相关或依赖对象。 通常创建的类都实现相同的接口。 抽象工厂的客户并不关心这些对象是如何创建的

怎样选择PHP框架来学习和开发?

回眸只為那壹抹淺笑 提交于 2020-03-02 12:45:57
笔者第一次使用的框架是ZendFramework,这是Zend公司写的一个完全面向对象的MVC框架。同时,也是这个时候才了解MVC的思想。 在如此多的PHP MVC框架中,怎样去选择一款各方面都不错的框架学习并在项目中使用它?这是每一个PHPer都会面临的问题。比如当前比较流行的框架有:ZendFrameWork、ThinkPHP(国产)、CodeIgniter、YII等。每个人心目中的好坏标准不一样,再加上有的人习惯了某框架,想让他再接受其优秀的框架也是比较难的。所以,我们应该怎样去判断一款框架是否属于自己,变得非常的突出。现在我给出几个标准,大家赞同的点个赞,不赞同的欢迎讨论。 一、性能: 所谓的性能指的是IO、CPU占用、PHP解析时间等几个指标。当前的服务器最突出的问题是CPU已经非常快了,内存已经够大够便宜了,唯独硬盘IO不够高。这就像一个一个智商150与一个智商80的人做1+1一样,根本体现不出智商的优越性。 特别指出一点,ZendFrameWork框架是我见过IO效率最差的框架。在不借助任何缓存扩展与其他框架对比情况下,简直不能忍受它的IO效率。相对来说,在IO这块还是那些用C语言写的框架比较好,CPU占用也低,内存使用也低。比如大名鼎鼎的Yaf框架。但是,它有一个致命的问题,框架安装是以扩展形式安装的。如果框架有Bug的话,也很难侦测到。 二、全栈式

HTML表单只读SELECT标记/输入

…衆ロ難τιáo~ 提交于 2020-02-25 16:14:31
根据HTML规范,HTML中的 select 标签没有 readonly 属性,只有 disabled 属性。 因此,如果要阻止用户更改下拉菜单,则必须使用 disabled 。 唯一的问题是禁用的HTML表单输入不会包含在POST / GET数据中。 模拟 select 标签的 readonly 属性并仍然获取POST数据的最佳方法是什么? #1楼 简单的jQuery解决方案 如果您的选择具有 readonly 类,请使用此选项 jQuery('select.readonly option:not(:selected)').attr('disabled',true); 如果您的选择具有 readonly="readonly" 属性,则为此属性 $('select[readonly="readonly"] option:not(:selected)').attr('disabled',true); #2楼 这是尝试使用自定义jQuery函数来实现功能(如此处所述): $(function(){ $.prototype.toggleDisable = function(flag) { // prepare some values var selectId = $(this).attr('id'); var hiddenId = selectId + 'hidden'; if

在PHP中检测请求类型(GET,POST,PUT或DELETE)

痴心易碎 提交于 2019-12-16 19:41:14
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 如何检测PHP中使用了哪种请求类型(GET,POST,PUT或DELETE)? #1楼 由于这与REST有关,因此仅从服务器获取请求方法是不够的。 您还需要接收RESTful路由参数。 分离RESTful参数和GET / POST / PUT参数的原因是,资源需要具有自己的唯一URL进行标识。 这是使用Slim在PHP中实现RESTful路由的一种方法: https://github.com/codeguy/Slim $app = new \Slim\Slim(); $app->get('/hello/:name', function ($name) { echo "Hello, $name"; }); $app->run(); 并相应地配置服务器。 这是使用AltoRouter的另一个示例: https://github.com/dannyvankooten/AltoRouter $router = new AltoRouter(); $router->setBasePath('/AltoRouter'); // (optional) the subdir AltoRouter lives in // mapping routes $router->map('GET|POST','/', 'home