欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > 从0开始学PHP面向对象内容之(类,对象,构造/析构函数)

从0开始学PHP面向对象内容之(类,对象,构造/析构函数)

2024/11/6 0:13:09 来源:https://blog.csdn.net/qq_41643749/article/details/143451541  浏览:    关键词:从0开始学PHP面向对象内容之(类,对象,构造/析构函数)

上期我们讲了面向对象的一些基本信息,这期让我们详细的了解一下
在这里插入图片描述

一、面向对象—类

1、PHP类的定义语法:

<?php
class className {var $var1;var $var2 = "constant string";function classfunc ($arg1, $arg2) {[..]}[..]
}
?>

2、解析:

类使用class关键字后加上类名定义
类名后的一对{}内了可以定义变量和方法
类的变量使用 var,public ,protected,private来声明,变量值可以初始化
函数定义类似于PHP的函数定义,但是函数只能通过该类及其实例化的对象访问。

3、实例:

<?php
class Site {/* 成员变量 */var $url;var $title;/* 成员函数 */function setUrl($par){$this->url = $par;}function getUrl(){echo $this->url . PHP_EOL;}function setTitle($par){$this->title = $par;}function getTitle(){echo $this->title . PHP_EOL;}
}
?>
变量$this 代表自身的对象
PHP_EOL 为换行符。

二、面向对象–创建对象

类实例化之后赋值给一个变量,这个变量就是对象
类创建后,我们可以使用 new运算符来实例化该类的对象;

1、对象创建语法:

$runoob= new Site;
$taobao= new Site;
$google= new Site;

以上代码我们创建了三个对象,三个对象各自都是独立的

2、调用成员

在实例化对象后,我们可以使用该对象调用成员方法,该对象的成员方法只能操作该对象的成员变量

语法

// 调用成员函数,设置标题和URL
$runoob->setTitle( "菜鸟教程" );
$taobao->setTitle( "淘宝" );
$google->setTitle( "Google 搜索" );$runoob->setUrl( 'www.runoob.com' );
$taobao->setUrl( 'www.taobao.com' );
$google->setUrl( 'www.google.com' );// 调用成员函数,获取标题和URL
$runoob->getTitle();
$taobao->getTitle();
$google->getTitle();$runoob->getUrl();
$taobao->getUrl();
$google->getUrl();

完整代码:

<?php
class Site {/* 成员变量 */var $url;var $title;/* 成员函数 */function setUrl($par){$this->url = $par;}function getUrl(){echo $this->url . PHP_EOL;}function setTitle($par){$this->title = $par;}function getTitle(){echo $this->title . PHP_EOL;}
}$runoob = new Site;
$taobao = new Site;
$google = new Site;// 调用成员函数,设置标题和URL
$runoob->setTitle( "菜鸟教程" );
$taobao->setTitle( "淘宝" );
$google->setTitle( "Google 搜索" );$runoob->setUrl( 'www.runoob.com' );
$taobao->setUrl( 'www.taobao.com' );
$google->setUrl( 'www.google.com' );// 调用成员函数,获取标题和URL
$runoob->getTitle();
$taobao->getTitle();
$google->getTitle();$runoob->getUrl();
$taobao->getUrl();
$google->getUrl();
?>

结果:

菜鸟教程
淘宝
Google 搜索
www.runoob.com
www.taobao.com
www.google.com

三、 构造函数、析构函数

构造函数是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,在创建对象的语句中与 new 运算符一起使用。

析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。

1、构造函数

我们可以通过构造函数来进行初始化变量,在上述例子中,我们需要调用 setUrl(),setTitle()对成员变量进行赋值,如果我们运用构造函数那么就可以在实例化(new)类的时候就进行赋值

语法

void __construct ([ mixed $args [, $... ]] )

实例

function __construct( $par1, $par2 ) {print "构造函数\n";//变量赋值$this->url = $par1;$this->title = $par2;
}

应用

<?php
class Site {/* 成员变量 */var $url;var $title;//构造函数function __construct( $par1, $par2 ) {$this->url = $par1;$this->title = $par2;}function getUrl(){echo $this->url . PHP_EOL;}function getTitle(){echo $this->title . PHP_EOL;}
}
//直接在实例化时传入参数
$runoob = new Site('www.runoob.com', '菜鸟教程');
$taobao = new Site('www.taobao.com', '淘宝');
$google = new Site('www.google.com', 'Google 搜索');
// 调用成员函数,获取标题和URL
$runoob->getTitle();
$taobao->getTitle();
$google->getTitle();$runoob->getUrl();
$taobao->getUrl();
$google->getUrl();
输出:

菜鸟教程
淘宝
Google 搜索
www.runoob.com
www.taobao.com
www.google.com

2、析构函数

析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。

语法

void __destruct ( void )

实例

 function __destruct() {print "销毁 " . $this->name . "\n";}

应用

class Dog {  public $name;  public function __construct($name) {  $this->name = $name;  echo "小狗 " . $this->name . " 来了!";  }  /* 当脚本运行到这里时,此方法下的成员函数无法被调用,因为这个对象的生命周期已经结束,这就是析构函数 */public function __destruct() {  echo "小狗 " . $this->name . " 走了,再见!";  }  public function say() {  echo $this->name . " 汪汪汪!";  }  
}  // 创建一个对象  
$dogObj = new Dog("旺财");  
// 调用小狗的say方法  
$dogObj ->say();  
// 当脚本运行到这里,$dogObj 对象不再被使用  
// 析构函数 __destruct 会被自动调用,输出“小狗走了”的消息
总结

构造函数用于所有成员函数之前
析构函数用于所有成员函数之后

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com