PHP实现一个限制实例化次数的类示例
本文实例讲述了PHP实现一个限制实例化次数的类。分享给大家供大家参考,具体如下:
实现思路
- 定义一个static变量$count,用于保存实例化对象的个数
- 定义一个static方法create,通过该方法判断$count的值,进而判断是否进一步实例化对象。
- 定义构造函数,$count+1
- 定义析构函数,$count-1
实现代码
<?php class demo{ public $name; public static $count=0; private function __construct($name){ echo "create $name <br/>"; $this->name = $name; self::$count++; } public function __destruct(){ echo "destory ".$this->name."<br/>"; self::$count--; } public static function create($name){ if(self::$count>2){ die("you can only create at most 2 objects."); }else{ return new self($name); } } } $one = demo::create("one"); $two = demo::create("two"); $two = null; $three = demo::create("three");
运行结果:
create one
create two
destory two
create three
destory three
destory one
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
相关推荐
-
PHP对象实例化单例方法
PHP实例化对象单例的方法: 三私一公:2个私有方法,1个私有属性,1个公共方法 private function __construct(){} //不可以继承构造方法 private function __clone(){}//不可以继承克隆方法 privare static $_instance; 一公 public static function getinstance(){ if(!isset(static:$_instance)){ static::$_instance=new st
-
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
本文实例讲述了PHP面向对象程序设计内置标准类,普通数据类型转为对象类型.分享给大家供大家参考,具体如下: 内置标准类 PHP中,有很多"现成的类",其中有一个被称为"内置标准类".这个类"内部"可以认为什么也没有. class stdclass{ } <?php $obj1 = new stdclass(); var_dump($obj1); class A{} $obj2 = new A(); var_dump($obj2); ?>
-
浅谈thinkphp的实例化模型
thinkphp实例化模型给我们提供了三种方法 第一种 比较平常使用 就是$user=new Model('user'); //也等于 $user=M('user') 第二种就是我们如果有公共模型 我们的使用是这样的 譬如我们新建一个model CommonModel.class.php这个公共模型 我们实例化就是这样的 复制代码 代码如下: $user=new CommonModel('user'); 这样我们既可以实例化user模型 又可以调用公共模型里边的方法 第三种就是针对我们的实例
-
php反射学习之不用new方法实例化类操作示例
本文实例讲述了php反射学习之不用new方法实例化类操作.分享给大家供大家参考,具体如下: 上一篇php反射入门示例简单介绍了 php 反射的几个常见类的使用方法,但是用反射能做些什么,你可能还是想象不到, 下面我稍微应用反射类来做点东西,大家知道实例化一个类需要用new 关键字,不用 new 可以吗?答案是可以的,用反射就能实现: 首先创建一个文件 student.php: <?php class Student { public $id; public $name; public funct
-
php面向对象全攻略 (二) 实例化对象 使用对象成员
5.如何实例化对象 我们上面说过面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,既然 我们类会声明了,下一步就是实例化对象了. 当定义好类后,我们使用new 关键字来生成一个对象. 代码片段 复制代码 代码如下: $对象名称= new 类名称(): <?php class Person{ //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //下面是人的成员方法 function say(){ //这个人可以
-
PHP 实例化类的一点摘记
下面是调用一个模型(Module)的函数.这个函数的基本功能是指定一个模型(抽象化为类)的名称,然后它会在模型目录下面寻找这个类的脚本实例化以后返回.这样的做法有一点好处就是载入和实例化是自动的,你可以获得最大的灵活性.下面请看下面的代码,它并不长而且不复杂: function &load_class($class_name, $param = null, $instantiate = true) { static $objects = array(); $class_name = uc
-
PHP单例模式应用示例【多次连接数据库只实例化一次】
本文实例讲述了PHP单例模式应用.分享给大家供大家参考,具体如下: 以前刚开始工作的时候经常连接数据库,每次用到数据库的时候就要用new进行实例并连接一次,当时因为连接数据库的次数不是很频繁,所以也没什么.后来主管对我说我现在这样每次都连接数据库的如果数据读取频繁的话对数据库和系统造成的压力会很大,让我想想办法能不能就连接一次数据库然后再次用到的时候就不用new一个新的连接了,当时怎么也没想到好的办法,知道最近学到了单例模式才恍然大悟,当时主管是引导我用单例模式的,只怪我以前对开发模式不懂.好了
-
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
本文实例讲述了PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作.分享给大家供大家参考,具体如下: 在PHP中,会遇到这样的情况,子类继承父类,但是又需要对父类的属性和方法进行一定的扩展,这时子类可以对属性和方法进行重写,覆盖与父类同名的属性和方法,但是如果父类的方法中的内容比较多,比如上百成千行代码,这时只需使用"父类类名::方法" 或"parent::方法"来调用父类中被覆盖的方法,有就是重新载入父类,然后再加上需要扩展的语句. 方法的重写 <?p
-
PHP类的声明与实例化及构造方法与析构方法详解
本文实例讲述了PHP类的声明与实例化及构造方法与析构方法.分享给大家供大家参考,具体如下: <?php class human{ public static $leg=2; public $name = 'leo'; public $age = '25'; public function cry(){ } } $leo = new human(); print_r($leo); /*返回 human Object ( [name] => leo [age] => 25 ) */ //为什
-
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
本文实例讲述了PHP面向对象程序设计高级特性.分享给大家供大家参考,具体如下: 静态属性 <?php class StaticExample { static public $aNum = 0; // 静态共有属性 static public function sayHello() { // 静态共有方法 print "hello"; } } print StaticExample::$aNum; StaticExample::sayHello(); ?> 输出:0
-
php学习笔记 类的声明与对象实例化
复制代码 代码如下: <?php /* 类的声明 * 1.你要开发的是什么,确定写什么类 * 2.类中的成员一定要属于这个类 * [修饰类的关键字] class 类名{ * 成员属性: * 成员方法: * } * 3.在类中声明成员属性时,前面必须有修饰词,当不确定使用哪个词时,使用var或public * 一个文件只保存一个类,文件名中包含类名,文件:类名.class.php * 类名的写法: * 变量:aaaBbbCcc * 函数:aaaBbbCcc * 常量:AAABBBCCC * 类名:
随机推荐
- angularjs学习笔记之简单介绍
- CentOS6.5 升级 Python 2.7 版本详细介绍
- iOS模糊效果的实现方法
- 详解Asp.Net Core 发布和部署( MacOS + Linux + Nginx )
- ThinkPHP写数组插入与获取最新插入数据ID实例
- Zend Framework框架中实现Ajax的方法示例
- Android小米推送简单使用方法
- php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
- 为什么Node.js会这么火呢?Node.js流行的原因
- 跟我学Laravel之视图 & Response
- JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
- 百度内部邮件曝光 李彦宏呼唤狼性 淘汰小资
- jQuery EasyUI API 中文文档 - Draggable 可拖拽
- 深入剖析Android系统中Service和IntentService的区别
- js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
- 感受狂飙:网络加速的好帮手
- 启用带宽限制功能的用户,请确认已安装QoS
- 解析如何用两个栈来实现队列的方法
- vista和win7在windows服务中交互桌面权限问题解决方法:穿透Session 0 隔离
- 在MyEclipse中修改Tomcat 6.x的端口号方法