1. 建立类
class MyPc {
var $key;
// 建议使用public,而不是var
public $name;
public function vod() {
echo "PHP 100 视频教程";
}
}
// 输出PHP 100 视频教程
$pc1 = new MyPc();
$pc1->vod();
2. 对象中的$this关键字、__construct()构造函数和析构函数__destruct()
PHP4
的时候使用function MyPc()
进行初始化
class MyPc {
public $name;
function __construct($name) {
$this->name = $name;
}
public function vod() {
//echo "PHP 100 视频教程";
echo $this->name;
}
// 规则:后进先出:先释放后建立的对象
// 垃圾回收机制
function __destruct() {
// ...
}
}
// 输出PHP 100 视频教程
$pc1 = new MyPc("PHP 100 视频教程");
$pc1->vod();
3. 类的封装和应用
封装关键字:public, protected, private
封装相关函数:
private $name;
function __set($name, $value) {
$this->$name = $value;
}
function __get($name) {
}
// 赋值
$pc1->name = "sss";
// 取值
echo $pc1->name;
4. 类的继承和应用
继承关键字:extends
重载:
class Root {
function dayin() {
return "Root print <br>";
}
}
class Son extends Root {
function dayin() {
// 重载dayin()函数
return Root::dayin()."Son print<br>";
}
}
// 输出Root print
// Son print
$p = new Son();
echo $p->dayin();
5. 类的抽象方法和类
一个类中至少有一个
方法是抽象的
不可实例化
,只能用它的继承类来实例化
抽象方法不允许有{}
抽象关键字:abstract
abstract class cl1{
abstract function fun1();
}
class cl2 extends cl1 {
function fun1() {
echo "第一个";
}
}
6. 类中常用关键字
关键字:final
当定义类
的时候该类将不能被继承
,当用来定义方法
的时候该方法将不能被重载
关键字:self
用来用类访问当前类中的内容的关键字,类似与$this
关键字,但$this是需要类实例化以后才可以使用,self 可以直接访问
当前类中的内部成员
self一般用来访问类中的:静态成员
,常量
,或者其他定义内容
关键字:static
用来定义类的静态属性或方法,可以在类未被实例化
时使用,静态属性单独占用内存而不会因创建多个对象时而导致同样的方法或者属性重复占用。
静态方法内部禁止出现非
静态内容
$this不能访问
静态属性
关键字:const
用来定义类中的常量,类似PHP外部定义常量
的关键字define()
const只能修饰类当中的成员属性
建议大写
常量
常量不使用$
符号
final class MyPc {
// 静态属性
static $name = "我的电脑";
// 常量
const USER = "我的";
final function power() {
echo self::$name."电脑开机中......"."<br>";
echo self::USER;
}
}
$p = new MyPc();
$p->power();
// 直接访问静态属性
echo MyPc::$name;
7. 类中接口的应用
先
继承后
接口,单
继承多
接口
关键字:interface、implements
抽象类:
1、类中至少有一个抽象方法
2、抽象方法前需加abstract
接口:
1、类中全部为抽象方法
2、抽象方法前不用加abstract
3、接口抽象方法属性为public
4、成员属性必须为常量
共同点:
1、本身都不能被实例化,必须被继承或者引用
2、继承或者引用后,需要把所有抽象方法重载方可使用
interface demo {
const NAME = "名称";
function fun1();
}
interface demo2 {
function fun2();
}
class mypc implements demo, demo2 {
function fun1() {
echo "======";
}
function fun2() {
echo "======";
}
}
8. 类中多态的应用
instanceof
用来测定一个给定的对象是否来自
指定的对象类
class A {}
class B {}
$thing = new A;
if ($thing instanceof A) {
echo 'A';
}
if ($thing instanceof B) {
echo 'B';
}
9. 总结篇
对象描述的配置
:__tostring()
class My {
function __tostring() {
echo "test";
}
}
$p = new My();
echo $p;
对象方法的异常处理
:__call($funname, $arr_value)
// 调用一些不存在的对象方法的异常处理,使程序继续正常运行
class My {
function __call($n, $v) {
echo "错误的方法名".$n;
echo "错误的参数".print_r($v);
}
}
克隆对象的应用
:__clone()
class My {
function __clone() {
echo "克隆时自动调用的函数";
}
}
$a = new My();
$b = clone $a;
自动载入对象的方法
:__autoload()
// 快速取得对象名称并自动载入进当前页面
function __autoload($class_n) {
// include("mypc.php");
include($class_n.".php");
}
$p = new Mypc();
$d = new demo();
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com