5.如何實例化對象
我們上面說過物件導向程式的單位就是對象,但物件又是透過類別的實例化出來的,既然
我們類別會聲明了,下一步就是實例化物件了。
當定義好類別後,我們使用new 關鍵字產生一個物件。
程式碼片段
$对象名称= new 类名称(); <?php class Person{ //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //下面是人的成员方法 function say(){ //这个人可以说话的方法 echo "这个人在说话"; } function run(){ //这个人可以走路的方法 echo "这个人在走路"; } } $p1=new Person(); $p2=new Person(); $p3=new Person(); ?> $p1=new Person();
這個程式碼就是透過類別產生實例物件的過程,$p1 是我們實例出來的物件名稱,同理,$p2,
$p3 也是我們實例出來的物件名稱,一個類別可以實例出多個對象,每個對像都是獨立的,上
面的代碼相當於實例出來3 個人來,每個人之間是沒有聯繫的,只能說明他們都是人類,每
個人都有自己的姓名,性別和年齡的屬性,每個人都有說話和走路的方法,只要是類裡面體
現出來的成員屬性和成員方法,實例化出來的對象裡面就包含了這些屬性和方法。
物件在PHP 裡面和整數、浮點型一樣,也是一種資料類,都是儲存不同類型資料用的,
在運作的時候都要載入到記憶體中去用,那麼物件在記憶體裡面是怎麼體現的呢?記憶體邏輯上
說大體上是分成4 段,棧空間段、堆空間段、程式碼段、初始化靜態段,程式裡面不同的宣告
放在不同的記憶體段裡面,棧空間段是儲存佔用相同空間長度並且佔空間較小的資料型別的地
方,比方說整數1,10,100,1000,10000,100000 等等,在記憶體裡面佔空間是等長的,
都是64 位元4 個字節。那麼資料長度不定長,而且佔有空間很大的資料類型的資料放在那個記憶體
的那個段裡面呢?這樣的資料是放在堆記憶體裡面的。棧記憶體是可以直接存取的,而堆疊記憶體是
不可以直接存取的記憶體。對於我們的物件來數就是一種大的資料型態而且是佔用空間不定長
的類型,所以說物件是放在堆疊裡面的,但物件名稱是放在堆疊裡面的,這樣透過物件名稱就可
以使用對象了。
$p1=new Person();
對於這個條碼,$p1 是物件名稱在堆疊記憶體裡面,new Person()是真正的物件是在堆疊記憶體
裡面的,具體的請看下圖:
從上圖可以看出$p1=new Person();等號右邊是真正的物件實例,在堆記憶體裡面的實體,
上圖一共有3 次new Person(),所以會在堆裡面開闢3 個空間,產生3 個實例對象,每個對象
之間都是互相獨立的,使用自己的空間,在PHP 裡面,只要有一個new 這個關鍵字出現就會
實例化出來一個對象,在堆裡面開闢一塊自己的空間。
每個在堆裡面的實例物件是儲存屬性的,比如說,現在堆裡面的實例物件裡面都存有姓
名、性別和年齡。每個屬性又都有一個位址。
$p1=new Person();等號的右邊$p1 是一個引用變量,透過賦值運算子「=」把物件的首位址
賦給「$p1」這個引用變量,所以$p1 是儲存物件首位址的變量,$p1 放在堆疊記憶體裡邊,$p1 相當
於一個指標指向堆裡面的對象,所以我們可以透過$p1 這個引用變數來操作物件,通常我們也
稱物件引用為物件。
6.如何去使用物件中的成員
上面看到PHP 物件中的成員有兩種一種是成員屬性,一種是成員方法。物件我們以經可
以宣告了,$p1=new Person();怎麼去使用物件的成員呢?想要存取物件中的成員就要使用一個
特殊的運算元「->」來完成物件成員的存取:
物件->屬性$p1->name; $p2->age; $p3->sex;
物件->方法$p1->say(); $p2->run();
如下面實例:
程式碼片段
<?php class Person{ //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //下面是人的成员方法 function say(){ //这个人可以说话的方法 echo "这个人在说话"; } function run(){ //这个人可以走路的方法 echo "这个人在走路"; } } $p1=new Person(); //创建实例对象$p1 $p2=new Person(); //创建实例对象$p2 $p3=new Person(); //创建实例对象$p3 //下面三行是给$p1对象属性赋值 $p1->name=”张三”; $p1->sex=”男”; $p1->age=20; //下面三行是访问$p1对象的属性 echo “p1对象的名字是:”.$p1->name.”<br>”; echo “p1对象的性别是:”.$p1->sex.”<br>”; echo “p1对象的年龄是:”.$p1->age.”<br>”; //下面两行访问$p1对象中的方法 $p1->say(); $p1->run(); //下面三行是给$p2对象属性赋值 $p2->name=”李四”; $p2->sex=”女”; $p2->age=30; //下面三行是访问$p2对象的属性 echo “p2对象的名字是:”.$p2->name.”<br>” echo “p2对象的性别是:”.$p2->sex.”<br>”; echo “p2对象的年龄是:”.$p2->age.”<br>”; //下面两行访问$p2对象中的方法 $p2->say(); $p2->run(); //下面三行是给$p3对象属性赋值 $p3->name=”王五”; $p3->sex=”男”; $p3->age=40; //下面三行是访问$p3对象的属性 echo “p3对象的名字是:”.$p3->name.”<br>”; echo “p3对象的性别是:”.$p3->sex.”<br>”; echo “p3对象的年龄是:”.$p3->age.”<br>”; //下面两行访问$p3对象中的方法 $p3->say(); $p3->run(); ?>
從上例中可以看出只是物件裡面的成員就要使用物件->屬性、物件->方法形式訪問,再
沒有第二種方法來訪問物件中的成員了。
以上就是php物件導向全攻略 (二) 實例化物件 使用物件成員的內容,更多相關內容請關注PHP中文網(www.php.cn)!

如何使用Go语言实现面向对象的事件驱动编程引言:面向对象的编程范式被广泛应用于软件开发中,而事件驱动编程是一种常见的编程模式,它通过事件的触发和处理来实现程序的流程控制。本文将介绍如何使用Go语言实现面向对象的事件驱动编程,并提供代码示例。一、事件驱动编程的概念事件驱动编程是一种基于事件和消息的编程模式,它将程序的流程控制转移到事件的触发和处理上。在事件驱动

解析PHP面向对象编程中的享元模式在面向对象编程中,设计模式是一种常用的软件设计方法,它可以提高代码的可读性、可维护性和可扩展性。享元模式(Flyweightpattern)是设计模式中的一种,它通过共享对象来降低内存的开销。本文将探讨如何在PHP中使用享元模式来提高程序性能。什么是享元模式?享元模式是一种结构型设计模式,它的目的是在不同对象之间共享相同的

go语言既不是面向对象,也不是面向过程,因为Golang并没有明显的倾向,而是更倾向于让编程者去考虑该怎么去用它,也许它的特色就是灵活,编程者可以用它实现面向对象,但它本身不支持面向对象的语义。

python是面向对象的。Python语言在设计之初,就定位为一门面向对象的编程语言,“Python中一切皆对象”就是对Pytho 这门编程语言的完美诠释。类和对象是Python的重要特征,相比其它面向对象语言,Python很容易就可以创建出一个类和对象;同时,Python也支持面向对象的三大特征:封装、继承和多态。

PHP作为一种广泛使用的编程语言,已成为构建动态网站和网络应用程序的首选语言之一。其中,面向对象编程(OOP)的概念和技术越来越受到开发者的欢迎和推崇。本篇文章将为读者提供PHP面向对象编程的入门指南,介绍OOP的基本概念,语法和应用。什么是面向对象编程(OOP)?面向对象编程(Object-OrientedProgramming,简称OOP),是一种编程

如何使用Go语言实现面向对象的数据库访问引言:随着互联网的发展,大量的数据需要被存储和访问,数据库成为了现代应用开发中的重要组成部分。而作为一门现代化、高效性能的编程语言,Go语言很适合用来处理数据库操作。而本文将重点讨论如何使用Go语言实现面向对象的数据库访问。一、数据库访问的基本概念在开始讨论如何使用Go语言实现面向对象的数据库访问之前,我们先来了解一下

Python作为一种高级编程语言,在众多编程语言中占有举足轻重的地位。它的语法简单易学,拥有各种强大的编程库,被广泛应用于数据处理、机器学习、网络编程等领域。而其中最重要的一点便是Python完美支持面向对象编程,本文将重点阐述Python中的面向对象编程。一、面向对象编程的基本概念在面向对象的编程语言中,数据和方法被封装在对象的内部。这使得对象能够独立地进

面向对象是软件开发方法,一种编程范式。是一种将面向对象的思想应用于软件开发过程并指导开发活动的系统方法。这是一种基于“对象”概念的方法论。对象是由数据和允许的操作组成的包,它与目标实体有直接的对应关系。对象类定义了一组具有类似属性的对象。面向对象是基于对象的概念,以对象为中心,以类和继承为构建机制,认识、理解和描绘客观世界,设计和构建相应的软件系统。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境