在接口中的静态方法来获取model的实例对象
直接先上代码:
接口代码
abstract class BaseModel
{ /**
* @var null
*/
protected static $_instances = Array(); /**
* 获取实例
* @return BaseModel $this
*/
public static function getInstance()
{
$className = get_called_class();
//验证实例数组内是否有该实例
if (empty(self::$_instances[$className]))
{
self::$_instances[$className] = new static();
}
//返回实例
return self::$_instances[$className];
}
}
然后所有的model都集成此接口即可。
比如:
class UserModel extends BaseModel
{ public function getUser($uid)
{
return $uid;
}
}
然后在控制器中使用:
$uid = 1;
$res = User::getInstance()->getUser($uid);
在接口中的静态方法来获取model的实例对象的更多相关文章
- Java8新特性-接口中的静态方法与默认方法
		
今天上午在读<Effective Java>时,有这样一句话:”接口中“不能有静态方法,于是联想起面试时老是被问接口相关的东西,决定总结一下,谁知道这一总结,就发现了自己知识的一大漏洞. ...
 - java8新特性——接口中的静态方法与默认方法
		
以前我们知道,接口中的方法必须时抽象方法,而从 java8 开始接口中也可以有方法的实现了,叫做默认方法. 一 .默认方法(default修饰) 在 java8 中,因为存在函数式接口,一个接口中只能 ...
 - Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
		
一.Java的反射机制 每个Java程序执行前都必须经过编译.加载.连接.和初始化这几个阶段,后三个阶段如下图: 其中
 - Ehcarts 与 百度地图结合时,如何获取bmap的实例对象?
		
ehcarts 与 百度地图结合时,百度地图的配置是以bmap属性来设置的.但却不知道如何获取bmap对象的实例? 毫无疑问,是包含在echarts实例中的. 传送门:https://blog.csd ...
 - Thymeleaf模板引擎与springboot关联后,在html中无法使用el表达式获取model存的值
		
头部引入了thymeleaf <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thy ...
 - jquery插件中使用ajax并且获取使用插件的对象
		
jquery插件中使用ajax后无法在里面获取this 解决办法是在函数内使用ajax前声明变量 $this=this 然后再ajax中使用$this
 - WPF绑定Model的实例对象
		
创建一个用户控件 1. behindcode指定this.DataContext=XXViewModel 2. "{Binding DataContext.EditModel.MId,Rel ...
 - Java 8 接口中的默认方法与静态方法
		
Java 8 接口中的默认方法与静态方法 1. 接口中的默认方法 允许接口中包含具有具体实现的方法,该方法称"默认方法",默认方法使用用 default 关键字修饰. public ...
 - Java 8——接口中个的默认方法和静态方法
		
在Java SE 8之前,interface只是事物的抽象,用来定义统一的抽象事物和描述事物的抽象行为和属性. 但是在Java SE 8中,增加了可以在interface中增加默认实现的行为和事物的静 ...
 
随机推荐
- 使用Erlang实现简单的排序算法:快速排序,冒泡排序,插入排序
			
[排序算法] -module(sort). -compile(export_all). %%快速排序 qsort([]) -> []; qsort([Pivot|T]) -> qsort( ...
 - 程序包 javax.servlet 不存在 解决办法
			
其原因是java编译器没有找到软件包javax.servlet. 下载servlet.jar放到lib下没有效果,后发现需要在jdk中添加,如下: 解决办法: 从tomcat lib目录下拷贝一个se ...
 - Linux进程间通信(二) - 消息队列
			
消息队列 消息队列是Linux IPC中很常用的一种通信方式,它通常用来在不同进程间发送特定格式的消息数据. 消息队列和之前讨论过的管道和FIFO有很大的区别,主要有以下两点(管道请查阅我的另一篇文章 ...
 - python 文字识别 之 pytesseract
			
pytesseract资源 链接:https://pan.baidu.com/s/1eTsqhsY 密码:j0yo 安装时前面一直next就可以了,直到这一步,勾选Math和Chinese,支持计算和 ...
 - ANDROID版本号号和版本号名称的重要性介绍
			
转载请注明出处http://blog.csdn.net/y150481863/article/details/41249159,来自[http://blog.csdn.net/y150481863] ...
 - Muduo网络库源代码分析(四)EventLoopThread和EventLoopThreadPool的封装
			
muduo的并发模型为one loop per thread+ threadpool.为了方便使用,muduo封装了EventLoop和Thread为EventLoopThread,为了方便使用线程池 ...
 - 九度OJ 1255:骰子点数概率 (递归、DP)
			
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:316 解决:29 题目描述: 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S.输入n,打印出S的所有可能的值出现的概率. 输入: 输入包 ...
 - js城市联动选择器
			
<html> <head> <META charset="utf8"> <script type="text/javascrip ...
 - 如何更改CSDN博客高亮代码皮肤的样式,使博客看起来更有范(推荐)
			
由于本人写博客的时候,也没有配置博客的相关属性,因此贴出来的代码块都是CSDN默认的,因此代码背景色都是白色的,如下所示: 但是本人在浏览他人博客的时候,发现有些博客的代码块看起来比较有范,整个代码库 ...
 - PAT 1054. 求平均值 (20)
			
本题的基本要求非常简单:给定N个实数,计算它们的平均值.但复杂的是有些输入数据可能是非法的.一个“合法”的输入是[-1000,1000]区间内的实数,并且最多精确到小数点后2位.当你计算平均值的时候, ...