第七节--类的静态成员 类的静态成员与一般的类成员不同: 静态成员与对象的实例无关,只与类本身有关. 他们用来实现类要封装的功能和数据,但不包括特定对象的功能和数据. 静态成员包括静态方法和静态属性. 静态属性包含在类中要封装的数据,可以由所有类的实例共享. 实际上,除了属于一个固定的类并限制访问方式外,类的静态属性非常类似于函数的全局变量 我们在下例中使用了一个静态属性Counter::$count. 它属于Counter类,而不属于任何...
第六节--访问属性和方法 一个对象实例的属性是变量,就像PHP的其他变量一样. 但是你必须使用->运算符来引用它们. 不需要在属性前使用美元符$. 例如, 6.1中打印User对象的name属性那一行. 可以联用->,如果一个对象的属性包含了一个对象,你可以使用两个->运算符来得到内部对象的属性. 你甚至可以用双重引用的字符串来放置这些表达式. 看6.5中的例子,对象House中的属性room包含了一组Room对象. 访问方法和访问属性类似. ->运算符用来指...
第三节--定义一个类 当你声明一个类,你需要列出对象应有的所有变量和所有函数—被称为属性和方法. 3.1.1中显示了一个类的构成. 注意在大括号({})内你只能声明变量或者函数. 3.1.2中显示了如何在一个类中定义三个属性和两个方法. 3.1.1class Name extends Another Class { Access Variable Declaration Access Function Declaration } 3.1.2 //定义一个跟踪用户的类 class User { //属性 public $name;...
第一节--面向对象编程面向对象编程被设计来为大型软件项目提供解决方案,尤其是多人合作的项目. 当源代码增长到一万行甚至更多的时候,每一个更动都可能导致不希望的副作用. 这种情况发生于模块间结成秘密联盟的时候,就像第一次世界大战前的欧洲.//haohappy注:喻指模块间的关联度过高,相互依赖性太强.更动一个模块导致其它模块也必须跟着更动.想像一下,如果有一个用来处理登录的模块允许一个信用卡处理模块来分享它的数据库连接. 当然...
第八节--访问方式 PHP5的访问方式允许限制对类成员的访问. 这是在PHP5中新增的功能,但在许多面向对象语言中都早已存在. 有了访问方式,才能开发一个可靠的面向对象应用程序,并且构建可重用的面向对象类库. 像C++和Java一样,PHP有三种访问方式:public,private和protected. 对于一个类成员的访问方式,可以是其中之一. 如果你没有指明访问方式,默认地访问方式为public. 你也可以为静态成员指明一种访问方式,将访问方式放在static关键字...
1.当将所有实例设为null,php会自动清除对象的引用。 2.建构子:__construct() 清除对象时自动执行的方法:__destruct() 也可以设置手动清除对象的方法:destroy或者clean_up 3.对象中的三种变量范围:public、private和protected。 4.对象中的常量属性可以使用const关键字,然后在对象外部以“对象名::属性名”的格式引用,在对象内部以“self::属性名”的格式引用。 5.在整个对象所有实例中通用的属性,就是静态属性,使用static...
需要操作的数据: 代码如下:$test =Array ( [0] => stdClass Object ( [tags] => 最快的车,Bloodhound,SSC [id] => 48326888 ) ) 从网上查到的方法是 用get_object_vars 把类类型转换成数组 然后在用 foreach 遍历即可 $array = get_object_vars($test);
使用网上流传的一个程序实现pdf截图为png,需要使用Imagic扩展。在windows下安装完后提示: Fatal error: Trying to clone an uncloneable object of class Imagick in C:\www\hx\pdf_to_png.php on line 17 使用IIS和Apache均会有这个提示。经多次测试后,发现两种解决方法: 1.php.ini中; Enable compatibility mode with Zend Engine 1 (PHP 4.x) zend.ze1_compatibility_mode = Off 默认是On,改为Off后,即可解决。 2.使用imag...
我这里实际是调用了一个zend的数据库访问的方法,使用了fetchAll方法,但由于数据库中没有该记录,所以返回的对象是null,所以我就判断对象是否为null: 代码如下:if($obj==null){ ... } 这么写的结果,就是产生了上面那个notice,也真是奇怪,对象为null,竟然不能访问了? 翻查资料后,发现,判断是否为null,需要这么判断: 代码如下:if (isset($obj)) { echo "This var is set set so I will print."; } 这个isset是做什么的...
在windows下安装完后提示:Fatal error: Trying to clone an uncloneable object of class Imagick in C:\www\hx\pdf_to_png.php on line 17 使用IIS和Apache均会有这个提示。经多次测试后,发现两种解决方法: 1.php.ini中; Enable compatibility mode with Zend Engine 1 (PHP 4.x)zend.ze1_compatibility_mode = Off 默认是On,改为Off后,即可解决。 2.使用imagick::...这种方法调用。即$im->setResolution(120, 120);可以改写为...
例如,员工管理应用程序可能包括一个EmPloyee 类。然后可以用这个类来创建和维护特定实例,比如Gonn和Sally。 根据预定义的类创建对象常称为类的实例化(class instantiation)。 对象使用new关键字创建,如下: 代码如下:$employee = new Employee(); 创建对象之后,这个刚实例化的对象就具有了类中定义的所有性质和行为。 如何实例化对象 面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,既然我们类会声明了,下...
ObjectUtil组件其实就是单例模式的最好范例,声明调用各个组件的时候,用ObjectUtil调用,可以有效的防止调用过多的类而导致错误或者资源浪费。 比如调用Db组件,这样声明就可以了 $db = LtObjectUtil::singleton(LtDb); singleton方法是LtObjectUtil类中唯一的方法,目的就是声明类库,如果该类库存在init()方法,然后调用该类库的init()的方法。 ObjectUtil 还有一个快速调用的函数,可以在框架里或者模板里进行快速调用 格式如下...
PHP中的扩展反射类,该扩展用来分析php程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。看一个这样的问题,php类的成员变量没有在类中声明,而是在函数中声明,有什么不同? 代码如下:class test{ private $name; private $sex; function __construct(){ $this->aaa='aaa'; }}$test=new test();$reflect=new ReflectionClass($test);$pro=$reflect->getDefaultProperties();print_r($pro);...
代码如下:function std_class_object_to_array($stdclassobject){ $_array = is_object($stdclassobject) ? get_object_vars($stdclassobject) : $stdclassobject;foreach ($_array as $key => $value) { $value = (is_array($value) || is_object($value)) ? std_class_object_to_array($value) : $value; $array[$key] = $value; }return $array;}
很多人在PHP输出一个二维数组的时候出现“Fatal error: Cannot use object of type stdClass as array in……”。解决办法分析如下: 现有这样一个二维数组:代码如下:Array ( [0] => stdClass Object ( [id] => 1 [title] => 招聘信息 [size] => 300*150 [pic] => ./upload/20140602093535.jpg [state] => 0 ) [1] => stdClass Object ( [id] => 2 [title] => 首页头条 [size] => 300*150 [pic] => ./upload/...