slim
文章平均质量分 71
yolo柚
人生天地间,无始终者,非君子也.吾来时明白,去时不可不明白!
展开
-
PHP预定义接口之ArrayAccess
PHP5之后新添加了一系列预定义接口,这些接口和实现的类统称为SPL。这些接口中就有一个重量级接口ArrayAccess,它的作用是使你的对象可以像数组一样被访问。接口简介,使用ArrayAccess方法需要定义四个方法。ArrayAccess { /* Methods */ abstract public boolean offsetExists ( mixed $offse原创 2017-11-29 00:57:47 · 334 阅读 · 1 评论 -
Slim研读笔记七乱入篇之Monolog(中)
上节,我们简单介绍了异常和错误的区别和处理,这节我们一起来看处理日志的神器Monolog的具体实现。// 在容器中注册Monolog日志组件$container['logger'] = function($c) { // 生成通道为my_logger的记录器 $logger = new \Monolog\Logger('my_logger'); // 生成一个程序处理原创 2017-12-14 00:52:47 · 797 阅读 · 1 评论 -
Slim研读笔记七乱入篇之Monolog(下)
Monolog将您的日志发送到文件,Socket,收件箱,数据库和各种Web服务。 特殊的处理程序允许您构建高级日志记录策略。该库实现了可以在自己的库中提示的PSR-3接口,以保持最大的互操作性。 您也可以在您的应用程序中使用它,以确保您以后可以随时使用其他兼容的记录器。核心概念每个记录器实例都有一个通道(名称)和一系列处理程序。无论何时向记录器添加记录,它都会遍历处理器堆栈翻译 2017-12-14 23:29:58 · 421 阅读 · 0 评论 -
Slim研读笔记五之依赖注入容器(中)
“一步一步走,心急吃不来热豆腐” —某村口大爷这节我们继续读上节没读完的代码。上节我们说到,应用主体传入了一个属性container,属性值为容器实例。然后,我们又了解了该容器类继承自Pimple容器实现自ContainerInterface接口,且这个容器接口继承自PsrContainerInterface。所以,Slim默认容器是符合PSR7规范的。之后,我们又从Container类原创 2017-12-07 00:50:38 · 468 阅读 · 1 评论 -
Slim研读笔记一之如何读框架
源码研读是一条十分小众的技术路线。在这条路上,99%的人会找寻各类借口麻痹自己,最终放弃。唯有1%的人,不忘初心,持之以恒,成就卓越。原创 2017-11-27 22:45:10 · 730 阅读 · 2 评论 -
Slim研读笔记五之依赖注入容器(下)
上节我们了解Pimple容器实现ArrayAccess接口的几个必须方法,这节让我们学习PimpleContainer的其他几个方法。 /** * 标记可调用对象为工厂服务 * Marks a callable as being a factory service. * * @param callable $callable A service原创 2017-12-08 01:43:35 · 325 阅读 · 0 评论 -
Slim研读笔记八之路由(中)
这节,我们承接上节继续研读Slim路由部分。我们首先由map函数进行延伸,因为get()、post()、any()等函数均是封装的此函数。 /** * 使用多种请求方法增加路由 * Add route with multiple methods * * @param string[] $methods Numeric array of HTTP原创 2017-12-25 23:16:43 · 300 阅读 · 0 评论 -
Slim研读笔记八之路由(下)
跟随上节的脚步继续研读代码。上节查看到了Slim/Router类的map方法。这节让我们根据一个请求的执行过程具体学习下这个路由的核心类。 /** * 增加一个路由 * Add route * * @param string[] $methods Array of HTTP methods * @param string原创 2017-12-26 23:14:21 · 467 阅读 · 2 评论 -
Slim研读笔记六之应用主体(中)
这节一起看下中间件/** * Middleware * 这是一个启用同心中间件的内部类。 * This is an internal class that enables concentric middleware layers. This * class is an implementation detail and is used only inside of the Slim原创 2017-12-15 18:48:56 · 295 阅读 · 1 评论 -
Slim研读笔记六之应用主体(下)
上节,我们详细的了解了下Slim中间件,并查看了MiddlewareAwareTrait特质 class App{ // 使用特质,包含了增加中间件和调用中间件方法 use MiddlewareAwareTrait;...让我们接着往下看。 /** * 增加中间件 * Add middleware * 这个方法增加一个新的中原创 2017-12-19 00:21:21 · 242 阅读 · 1 评论 -
Slim研读笔记五之依赖注入容器(上)
上节,我们迈出了前进的一小步—Composer研读,了解了Composer组件加载机制。从这节开始,我们学习Slim几大核心模块—依赖注入容器、路由、中间件等。依赖注入容器可以注入一些服务,主要用于解决组件之间的依赖关系。Slim支持Container-Interop接口实现的容器,我们可以使用Slim内置容器Pimple或其他第三方容器,例如PHP-DI。这里为了方便研读,我们使用S原创 2017-12-06 00:47:10 · 894 阅读 · 2 评论 -
Slim研读笔记七乱入篇之Monolog(补)
Monolog是最为广泛的PHP日志库,它有几十个处理程序可记录日志到不同的程序中。柚子前段时间也曾写过一篇关于Monolog研读博文,分析了Monolog最重要两个类中的关键代码。这节,介绍一些实用性的东东,譬如:如何用Monolog开发ELK可以使用的日志。Logstash是一个开源的日志管理工具,带有一个漂亮的界面Kibana。我不想在这里描述如何安装Logstash,具体详情可查看我的原创 2017-12-23 03:26:58 · 731 阅读 · 1 评论 -
Slim研读笔记二之造一款Slim应用
工欲善其事,必先利其器。柚子意图研读Slim框架,若没有一个好的Slim应用,也会显得无从下手。所以,研读第一步是——造一款Slim应用。具体细节参考自官网http://www.slimphp.net/docs/tutorial/first-app.html。出于柚子自身开发倾向,自制的Slim应用可能会与官方教程略有不同。在我们即将要创建的Slim应用中,用到了:Twig模板原创 2017-11-30 01:03:09 · 596 阅读 · 3 评论 -
Slim研读笔记五之依赖注入容器(补)
上节,我们研读了Pimple容器的具体实现,这节我们来查看Slim默认容器的实现细节。简单浏览代码我们可知,Slim默认容器其实就是对Pimple容器进行的一层封装。前面我们已知Slim\Container完成了集成默认配置项,注册默认服务。现在,让我们接着看剩下的代码。 /** * 通过标识符查找容器的条目并将其返回 * Finds an entry of the原创 2017-12-09 01:06:38 · 380 阅读 · 2 评论 -
Slim研读笔记三之Composer(上)
上章节,我们自制了一款属于我们自己的Slim框架样板项目。这章节,我们从网络请求开始的地方index.php来研读slim框架。<?phpuse Psr\Http\Message\ServerRequestInterface as Request;use Psr\Http\Message\ResponseInterface as Response;require '../vendor原创 2017-12-01 01:18:04 · 350 阅读 · 0 评论 -
Slim中的集合类Collection
之前柚子也曾提到Slim中的集合类Collection,但因太过“短小”而被同事诟病,今天给出更为详细的关于Slim集合类的博文。该集合类页算是在Slim系列正式接触SPL的第一篇。Slim中定义了一个集合类Collection,该类提供了对集合对象的通用接口方法。该集合类实现集合的数据结构,集合类实现的集合接口继承了ArrayAccess,Countable, IteratorAggrega原创 2017-12-02 01:34:31 · 398 阅读 · 0 评论 -
Slim研读笔记七之应用程序中间件(上)
柚子以为,面对未知问题的求证过程应是:首先,根据问题大量大胆猜测,幻想可能的答案。然后,一步步精确的求证。不急功近利,不以偏概全,而应环环相扣,循序渐进。之后,根据大量事实总结出客观规律。方可达到知其然且知其所以然。 通过文档可知,Slim包含三种中间件,应用程序中间件、路由中间件、中间件组等。应用程序中间件示例,在index.php中: $app->add(fun原创 2017-12-19 23:44:39 · 533 阅读 · 1 评论 -
Slim研读笔记六之应用主体(上)
之前柚子曾将\Slim\App称之为应用主体,应用主体可理解为贯穿应用程序执行生命周期最重要的那个类。这节,我们详细说明Slim应用主体的相关属性和方法。原创 2017-12-12 00:55:47 · 286 阅读 · 0 评论 -
Slim研读笔记七之应用程序中间件(下)
中间件的压栈流程并不复杂,柚子心中大概也有个思路,这里画出草图:中间件在调用时会现获取最后的中间件(匿名函数对象),然后根据中间件之间的关联自动进行调用。 /** * 调用中间件 * Call middleware stack * * @param ServerRequestInterface $request A request obj原创 2017-12-20 23:22:58 · 361 阅读 · 1 评论 -
Slim研读笔记七乱入篇之Monolog(上)
最近两天,我的同事小涛涛因开发需要,急需一个日志系统来记录日志。所以,从这节开始我们讲解Monolog,深入理解下Monolog的使用方式与实现原理。在开始研读之前,我们需要理清二个概念异常和错误。异常异常是Exception类的对象,在遇到无法修复的状况时抛出(例如,远程 API 无响应,数据库查询失败等),我们称这些状况为异常状况。Exception 对象与其他任何 PHP原创 2017-12-13 00:16:52 · 728 阅读 · 0 评论 -
Slim研读笔记四之Composer(下)
“Composer是现代php项目的基石,作为一个有梦想的PHPer,不懂可不行哦” ——海盗.娜美这节是Composer源码分析系列的第二节,我们继续延续上节未完成的工作。上节,我们通过autoload_real.php文件了解self::$loader得到\Composer\Autoload\ClassLoader()对象。然后就将注册到autoload队列的loaderClass原创 2017-12-05 01:13:12 · 384 阅读 · 0 评论 -
Slim研读笔记八之路由(上)
从这节开始,我们开始研读路由。每个框架都会有路由,Slim框架的路由略微特殊,其路由功能是集成在应用主体中的。Slim 提供了快速强大的路由器,它能将路由映射到特定的 HTTP 请求方法和 URI 。它支持参数和模式匹配。Slim路由也是严格符合Restful规范的,方便我们进行接口开发,故其支持标准Http协议的六种请求方法,即:1、GET2、POST3、PUT4、Delet原创 2017-12-22 00:13:15 · 835 阅读 · 0 评论 -
Slim研读笔记八之外观模式(上)
今天柚子深入学习了Laravel的外观模式,这节让我们带着问题去学习Slim的外观模式。问题1.外观模式为何可以快速指定到类?问题2.Slim如何集成外观模式?问题1外观模式大量使用PHP的后期静态绑定即父类定义的属性子类可以直接使用。外观模式Facade抽象类的__callStatic魔术方法是关键。问题2实现Slim的外观模式,使用Facade做原创 2017-12-27 23:25:34 · 311 阅读 · 0 评论