设计模式
1、 开闭原则(对扩展开放,对修改关闭)
2、单一职责原则(一个类只负责一个功能)
3、里氏替换原则(类型约束,类型限定)
4、依赖倒置原则(pdo数据库连接)
总:1、接口,抽象;2低层,具体实现;3前端应用,高层
1、高层模块不应该依赖低层模块,两者都应该依赖抽象(低层实现如mysql,sqlserver,oracle等,高层调用add,delete,update等)
2、抽象不应该依赖于细节,细节应当依赖于抽象
3、面向接口编程,而非面向具体实现编程
5、接口隔离原则(把接口分离,公有的方法提取出来,避免类实现接口里不必要的方法,)
6、迪米特法则(最少知道法则,比如租客,中介,房东,又例如统计中国人口,中央按省统计,不关心省具体怎么统计),聚合/组合复用原则和继承的使用(如果是has,例如人有手,则是用trait聚合/组合,如果是is,认识动物,则用继承)
7、单例模式:一个类只有一个实例,比如数据库连接类,后面程序需要使用数据库时,只需要实例化一次
header('Content-Type:text/html; charset=utf-8;');
final class DB {
private static $instance = null;
public $conn = null;
private function __construct($config) {
$this->conn = new mysqli($config['host'],$config['username'],$config['pwd'],$config['database']);
}
public static function getInstance($config) {
if (self::$instance === null) {
self::$instance = new self($config);
}
return self::$instance;
}
public function __clone() {
throw new Exception('Error: 禁止克隆');
}
}
$db = DB::getInstance(['host'=>'127.0.0.1','username'=>'root','pwd'=>'root','database'=>'test']);
$link = $db->conn;
mysqli_query($link, 'set names utf8');
$result = $link->query("select * from goods");
print_r($result->fetch_all());
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
2017-08-28 php __CLASS__、get_class()与get_called_class()