1. 程式人生 > >PHP類(三)-類的封裝

PHP類(三)-類的封裝

bubuko php 執行 rom 方法 .com 賦值 訪問 and

設置私有成員

使用private關鍵字來設置私有成員,完成對成員的封裝,封裝後的成員在對象的外部不能被訪問,如果訪問會出現錯誤,在對象的內部能訪問被封裝的成員屬性和方法。

<?php
	class Person{
		//封裝屬性
		private $name;
		private $age;
		private $sex;
		
		function __construct($name="Tom",$age=23,$sex="Male"){
			$this->name = $name;
			$this->age = $age;
			$this->sex = $sex;
		}
		
		function Say(){
			echo "My name is ".$this->name.",and my age is ".$this->age.",sex is ".$this->sex;
		}
		
		private function Walk(){
			echo $this->name." is Walk.";
		}
	}
	
	$p1 = new Person();
	$p1->Say();
	$p1->Walk();
	$p1->age = 25;
?>

執行結果

My name is Tom,and my age is 23,sex is Male
Fatal error: Call to private method Person::Walk() from context ‘‘ in C:\phpStudy\WWW\php\lei\FengZhuang.php on line 25
Fatal error: Cannot access private property Person::$age in C:\phpStudy\WWW\php\lei\FengZhuang.php on line 26

私有成員的訪問

在對象外如果想獲取私有屬性的值,或者想給私有屬性賦值,可以使用public關鍵字或者在對象內部聲明一些操作私有屬性的方法

類中的構造方法默認為公有方法,構造方法不要設置成私有的

<?php
	class Person{
		private $name;
		private $age;
		private $sex;
		
		function __construct($name="Tom",$age=23,$sex="Male"){
			$this->name = $name;
			$this->age = $age;
			$this->sex = $sex;
		}
		
		function Say(){
			echo "My name is ".$this->name.",and my age is ".$this->age.",sex is ".$this->sex;
			echo "<br>";
		}
		
		public function Walk(){
			echo $this->name." is Walk.";
			echo "<br>";
		}
		
		public function SetAge($age){
			if($age >100 || $age <0)
				return;
			else
				$this->age = $age;
				return $this->age;
		}
	}
	
	$p1 = new Person();
	$p1->Say();
	$p1->Walk();
	$p1->SetAge(53);
?>

運行結果

技術分享圖片

PHP類(三)-類的封裝