-
基本原则查看全部
-
编程推荐字体查看全部
-
namespace 内部使用 外部使用 动态访问元素(例如,变量函数) 非限定名称 √ × × 限定名称 × √ × 完全限定名称 √ √ √查看全部
-
定义命名空间 只有以下类型的代码受命名空间的影响,它们是:类(包括抽象类和traits)、接口、函数和常量. 命名空间通过关键字namespace来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间,除了一个以外:declare关键字。 namespace MyProject3 { // MyProject3 命名空间中的PHP代码 } 如果要动态访问元素(例如,变量函数),必须使用完全限定名称查看全部
-
编程字体 1.等宽字体 2.Courier New、Consolas 推荐字体 source code pro查看全部
-
111查看全部
-
<?php namespace IMooc\Config; class Conf implements \ArrayAccess{ private $path; private $configs = array(); public function __construct($path) { $this->path=$path; } function offsetGet($offset) { if(empty($this->configs[$offset])){ $path=$this->path.'/'.$offset.'.php'; $config=require_once $path; $this->configs[$offset]=$config; } return $this->configs[$offset]; } function offsetSet($offset, $value) { throw new \Exception("cannot write config file!"); } public function offsetExists($offset) { return isset($this->configs[$offset]); } public function offsetUnset($offset) { unset($this->configs[$offset]); } }查看全部
-
<?php /** * 迭代器模式. */ namespace IMooc\Iterator; class UserAll implements \Iterator { private $users; private $index=0; function __construct(array $users) { $this->users = $users; } function key() { return $this->index; } function next() { return $this->index++; } function valid() { return isset($this->users[$this->index]); } function rewind() { $this->index=0; } function current() { return $this->users[$this->index]; } }查看全部
-
>>> 面向对象编程的基本原则 1. 单一职责:一个类,只需做好一件事情。不要使用一个类来完成很复杂的功能,而是拆分设计成更小更具体的类。 2. 开放封闭原则:一个类,应该可以扩展,而不可修改的。一个类在实现之后,应该是对扩展开放,对修是改封闭的,不应该使用修改来增加功能,而是通过扩展来增加功能。 3. 依赖倒置:一个类,不应该强制依赖另一个类。每个类对另外一个类都是可以替换的。如:有A、B两个类,A需要依赖B类,不应该在A类中直接调用B类,而是要使用依赖注入的方式,通过使用诸如,将A类依赖的B类的对象注入给A类,B类对于A类来说就是可以替换的。如果C类实现了和B类一样的接口,那对于A类,B和C也是可以随意替换的。 4. 配置化: 尽可能的使用配置,而不是使用硬编码。像类的关系的定义,也应该是可以配置的。 5. 面向接口编程,而不是面向实现编程:只需要关心接口,不需要关心实现。所有的代码,它只需要关心某一个类实现了哪些接口,而不需要关心这个类的具体实现。查看全部
-
谢谢老师,辛苦了。查看全部
-
>>> 迭代器模式 1. 迭代器模式,在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素 2. 相比传统的编程模式,迭代器模式可以隐藏遍历元素所需的操作 >>> 应用场景 遍历数据库表,拿到所有的user对象,然后用佛 foreach 循环,在循环的过程中修改某些字段的值。查看全部
-
static function getUser($id){ $objUserKey='user_'.$id; $user=Register::get($objUserKey); if(!$user){ $user=new User($id); Register::set($objUserKey,$user); } return $user; } class Page{ function index(){ $this->setName(); $this->setMobile(); } function setName(){ $user=\Imooc\Factory::getUser(1); $user->name='Mary'; $user->save(); } function setMobile(){ $user=\Imooc\Factory::getUser(1); $user->mobile='13600000000'; $user->save(); } } $page=new Page(); $page->index();查看全部
-
>>> 原型模式 1. 与工厂模式作用类似,都是用来创建对象 2. 与工厂模式的实现不懂,原型模式是首先创建好一个原型对象,然后通过clone原型对象来创建新的对象。这样就免去了类创建是重复的初始化操作 3. 原型模式适用于大对象的创建。创建一个大对象需要很大的开销,如果每次new就会消耗很大,原型模式仅需内存拷贝即可查看全部
-
>>> 观察者模式 1. 观察者模式( Observer ),当一个对象状态发生改变时,依赖它的对象全部会收到通知,并自动更新 2. 场景:一个事件发生后,要执行一连串更新操作。传统的编程方式,就是在事件的代码之后直接加入处理逻辑。当更新的逻辑增多后,代码会变得难以维护。这种方式是耦合的,入侵式的,增加新的逻辑需要修改事件主体的代码 3. 观察者模式实现了低耦合,非入侵式的通知与更新机制查看全部
-
栈,入栈查看全部
举报
0/150
提交
取消