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类的声明与实例化及构造方法与析构方法.分享给大家供大家参考,具体如下: <?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 实例化类的一点摘记
下面是调用一个模型(Module)的函数.这个函数的基本功能是指定一个模型(抽象化为类)的名称,然后它会在模型目录下面寻找这个类的脚本实例化以后返回.这样的做法有一点好处就是载入和实例化是自动的,你可以获得最大的灵活性.下面请看下面的代码,它并不长而且不复杂: function &load_class($class_name, $param = null, $instantiate = true) { static $objects = array(); $class_name = uc
-
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
本文实例讲述了PHP面向对象程序设计内置标准类,普通数据类型转为对象类型.分享给大家供大家参考,具体如下: 内置标准类 PHP中,有很多"现成的类",其中有一个被称为"内置标准类".这个类"内部"可以认为什么也没有. class stdclass{ } <?php $obj1 = new stdclass(); var_dump($obj1); class A{} $obj2 = new A(); var_dump($obj2); ?>
-
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
本文实例讲述了PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作.分享给大家供大家参考,具体如下: 在PHP中,会遇到这样的情况,子类继承父类,但是又需要对父类的属性和方法进行一定的扩展,这时子类可以对属性和方法进行重写,覆盖与父类同名的属性和方法,但是如果父类的方法中的内容比较多,比如上百成千行代码,这时只需使用"父类类名::方法" 或"parent::方法"来调用父类中被覆盖的方法,有就是重新载入父类,然后再加上需要扩展的语句. 方法的重写 <?p
-
浅谈thinkphp的实例化模型
thinkphp实例化模型给我们提供了三种方法 第一种 比较平常使用 就是$user=new Model('user'); //也等于 $user=M('user') 第二种就是我们如果有公共模型 我们的使用是这样的 譬如我们新建一个model CommonModel.class.php这个公共模型 我们实例化就是这样的 复制代码 代码如下: $user=new CommonModel('user'); 这样我们既可以实例化user模型 又可以调用公共模型里边的方法 第三种就是针对我们的实例
-
php学习笔记 类的声明与对象实例化
复制代码 代码如下: <?php /* 类的声明 * 1.你要开发的是什么,确定写什么类 * 2.类中的成员一定要属于这个类 * [修饰类的关键字] class 类名{ * 成员属性: * 成员方法: * } * 3.在类中声明成员属性时,前面必须有修饰词,当不确定使用哪个词时,使用var或public * 一个文件只保存一个类,文件名中包含类名,文件:类名.class.php * 类名的写法: * 变量:aaaBbbCcc * 函数:aaaBbbCcc * 常量:AAABBBCCC * 类名:
-
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单例模式应用.分享给大家供大家参考,具体如下: 以前刚开始工作的时候经常连接数据库,每次用到数据库的时候就要用new进行实例并连接一次,当时因为连接数据库的次数不是很频繁,所以也没什么.后来主管对我说我现在这样每次都连接数据库的如果数据读取频繁的话对数据库和系统造成的压力会很大,让我想想办法能不能就连接一次数据库然后再次用到的时候就不用new一个新的连接了,当时怎么也没想到好的办法,知道最近学到了单例模式才恍然大悟,当时主管是引导我用单例模式的,只怪我以前对开发模式不懂.好了
-
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面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
本文实例讲述了PHP面向对象程序设计高级特性.分享给大家供大家参考,具体如下: 静态属性 <?php class StaticExample { static public $aNum = 0; // 静态共有属性 static public function sayHello() { // 静态共有方法 print "hello"; } } print StaticExample::$aNum; StaticExample::sayHello(); ?> 输出:0
随机推荐
- Docker搭建本地私有仓库的详细步骤
- 在Spring Boot中如何使用数据缓存
- python出现"IndentationError: unexpected indent"错误解决办法
- php str_pad 函数用法简介
- PHP移动文件指针ftell()、fseek()、rewind()函数总结
- C++中I/O模型之select模型实例
- Android中没有插入SD情况下的文件写入和读取方法
- mysqldump加-w参数备份数据时需要注意的事项
- PowerShell脚本实现创建桌面快捷方式的方法
- Android开发:浅谈MVP模式应用与内存泄漏问题解决
- jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
- 百度手写板代码JavaScript远程调用的实现(鼠标输入法)
- IIS未找到提供程序该程序可能未正确安装错误解决办法
- Eclipse下使用ANT编译提示OutOfMemory的解决方法
- SpringBoot集成swagger的实例代码
- Java多线程之volatile关键字及内存屏障实例解析
- 如何安装多版本python python2和python3共存以及pip共存
- 实例详解BootStrap的动态模态框及静态模态框
- Flutter学习之构建、布局及绘制三部曲
- vue elementUI 表单嵌套验证的实例代码