的格式如下:
function __construct(){}
或者:function 类名(){}
构造方法可以没有参数,也可以有多个参数。
析构方法的作用和构造方法正好相反,是对象被销毁时被自动调用的,作用是释放内存。
析构方法的定义方法为:__destruct();
因为php具有垃圾回收机制,能自动清除不再使用的对象,释放内存,一般情况下可以不手动创建析构方法。
73. __autoload()方法的工作原理是什么? 使用这个魔术函数的基本条件是类文件的文件名要和类的名字保持一致。
当程序执行到实例化某个类的时候,如果在实例化前没有引入这个类文件,那么就自动执行__autoload()函数。这个函数会根据实例化的类的名称来查找这个类文件的路径,当判断这个类文件路径下确实存在这个类文件后就执行include或者require来载入该类,然后
程序继续执行,如果这个路径下不存在该文件时.
就提示错误。使用自动载入的魔术函数可以不必要写很多个include或者require函数。
74. 什么是抽象类和接口?抽象类和接口有什么不同和相似的地方? 抽象类是一种不能被实例化的类,只能作为其他类的父类来使用。
抽象类是通过关键字 abstract 来声明的。
抽象类与普通类相似,都包含成员变量和成员方法,两者的区别在于,抽象类中至少要包含一个抽象方法,
抽象方法没有方法体,该方法天生就是要被子类重写的。
抽象方法的格式为:abstract function abstractMethod();
因为php中只支持单继承,如果想实现多重继承,就要使用接口。也就是说子类可以实现多个接口。接口类是通过interface关键字来声明的,接口类中的成员变量和方法都是public的,方法可以不写关键字public,接口中的方法也是没有方法体。接口中的方法也天生就是要被子类实现的。抽象类和接口实现的功能十分相似,最大的不同是接口能实现多继承。在应用中选择抽象类还是接口要看具体实现。子类继承抽象类使用extends,子类实现接口使用implements。
抽象类至少有一个抽象方法吗??????
答:如果一个类声明成抽象类,里面可以没有抽象方法
如果一个类中有抽象方法,这个类必须是抽象类
75. __call的参数有几个,类型是什么,意义是什么? 魔术方法__call()的作用是当
程序调用一个不存在或不可见的成员方法时,php会先调用__call()方法,将那个不存在的方法的方法名和参数都存储下来。
__call()包含两个参数, 第一个参数是那个不存在的方法的方法名,是个字符串类型;
第二个参数是那个不存在的方法的所有参数,是个数组类型。
本人认为__call()方法的意义更多在于调试,可以定位到错误。同时可以捕捉异常,如果某个方法不存在,则执行其它可替代方法。
76. smarty模板技术的用途是什么? 为了php与html分开,美工和
程序员各司其职,互不干扰。
77. smarty配置主要有哪几项? 1. 引入smarty.class.php;
2. 实例化smarty对象;
3. 重新修改默认的
模板路径;
4. 重新修改默认的编译后文件的路径;
5. 重新修改默认的配置文件的路径;
6. 重新修改默认的cache的路径。
7. 可以设置是否开启cache。
8. 可以设置左侧和右侧定界符。
78. smarty在使用过程中需要注意哪些细节? Smarty是基于MVC概念的一种
模板引擎,它将一个页面程序分成了两部分来实现:即视图层和控制层,也就是说smarty技术将用户UI与php代码分离开。这样程序员和美工各司其职,互不干扰。
smarty运用过程中要注意以下几个问题:
1.正确配置smarty。主要要实例化smarty对象,配置smarty
模板文件的路径;