随笔分类 - laravel设计
摘要:重载(overloading) 在Laravel中就大量应用了重载相关知识,如在IlluminateSupportFacadesFacade中就用到了方法重载知识:使用魔术方法__callStatic()来动态创建类中未定义或不可见的静态方法。PHP中重载概念与其他的OOP语言如JAVA语言中重载概
阅读全文
摘要:PHP具有完整的反射 API,提供了对类、接口、函数、方法和扩展进行逆向工程的能力。**通过类的反射提供的能力我们能够知道类是如何被定义的,它有什么属性、什么方法、方法都有哪些参数,类文件的路径是什么等很重要的信息。**也正式因为类的反射很多PHP框架才能实现依赖注入自动解决类与类之间的依赖关系,这
阅读全文
摘要:1. 获取原始属性 当修改一条 Eloquent 模型记录的时候你可以通过调用 getOriginal() 方法获取记录的原始属性 $user = App\User::first(); $user->name; //John $user->name = "Peter"; //Peter $user-
阅读全文
摘要:追加属性append的使用 1、如果你的需要的数据,是根据数据库中的某个值,计算出来。可以appends中增加该属性,再定义一个访问器返回对应的结果 注:定义在模型类上,对所有的模型数据都会增加该属性。 2、如果只对部分数据需要的属性,可以在取出数据库值后再append protected $app
阅读全文
摘要:抽象类不能直接通过new去实例化一个对象,要获取抽象类的对象, 需要先用一个类继承抽象类, 然后去实例化子类。 在我们日常代码开发中,可能最常见的功能就是列表筛选了。通过不同的参数,返回符合条件的内容。下面我分享一下自己的过滤代码设计(其实是从 Laracasts 上学来的?)。 基本实现 假设我们
阅读全文
摘要:单一职责 UserController 的 index 方法从数据库中获取全部用户,并返回渲染后的视图。 class UserController extends Controller { public function index() { $users = User::all(); return
阅读全文
摘要:原理 Web 应用可分为客户端和服务端,这两者之间经常需要进行身份认证。 由于 HTTP 是无状态协议,不能保存认证后的用户状态,因此,每一次发送请求都需要重复的进行认证。 为了解决该问题,通常会使用 Cookie 来管理 Session,来实现用户状态管理。 服务器需要记录 Session 信息,
阅读全文
摘要:Laravel 从学徒到工匠 服务容器篇 IoC 容器(控制反转容器),借助于“第三方”实现具有依赖关系的对象之间的解耦,如下图所示: 通过 IoC 容器可以帮助我们更方便地管理类依赖 依赖注入 就是传递的参数是一个对象。 在服务提供者中将实现类绑定到所实现的接口,这项工作可以在服务提供者的 reg
阅读全文
摘要:PHP 设计模式系列 策略模式 策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用。 策略模式指的是程序中涉及决策控制的一种模式。策略模式功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程的多形性思想。 策略模式的三个角色: 1.抽象策略角色 2.具体策略角色 3
阅读全文