php中物件,類與記憶體的關係
記憶體分為4個部分
資料段,棧段,程式碼段,堆段。
棧是先進後出,而且分配的記憶體很少,但是速度很快,通常用於儲存一些標量,例如(int,string,boolean)因為這些已經知道他的記憶體大小,所以可以直接放到棧中。而物件,陣列等一些不知道大小的變數,那麼就會存放到堆記憶體中。
所以當我們建立陣列跟物件的時候,同時也會產生一個引用,這個引用是已知大小的,所以就放在棧記憶體中,而實際的內容就會放在堆記憶體中。這就是為什麼陣列跟物件是引用變數。
<?php class Person { public $name; public $age; public $knows; //建構函式,當類被例項化時,會自動執行 public function __construct() { //例項化方式 $變數名 = new 類名(); //其中$變數名就是這個類的引用,變數名當要儲存的時候 //被改變成pc認知的名字即記憶體地址來儲存在棧記憶體中 echo "這裡被執行了"; } } $p1 = new Person(); ?>
其中__construct就是這個類的建構函式,當這個類被例項化的時候,這個函式就會自動執行。而當一個類的引用斷了的時候,這個在記憶體在就被當做垃圾,php就會執行垃圾回收機制,將這個類回收掉
而當類將要被回收的時候,還會執行一個魔術函式,這個函式是__destruct
在上面我們會發現,先被回收的是$p2而不是$p1;<?php class Person { public $name; public $age; public $knows; //建構函式,當類被例項化時,會自動執行 public function __construct($name) { //例項化方式 $變數名 = new 類名(); //其中$變數名就是這個類的引用,變數名當要儲存的時候 //被改變成pc認知的名字即記憶體地址來儲存在棧記憶體中 $this -> name = $name; echo $this->name."這裡被執行了<br>"; } public function __destruct() { echo $this->name."我被回收了<br>"; } } $p1 = new Person("張三"); $p2 = new Person("李四"); /*輸出 張三這裡被執行了 李四這裡被執行了 李四我被回收了 張三我被回收了 */ ?>
這是因為$p1與$p2這兩個變數是儲存在棧記憶體中,所以當回收的時候,先進的$p1會變成後出所以才會有李四先被輸出,張三在後面
相關推薦
php中物件,類與記憶體的關係
記憶體分為4個部分 資料段,棧段,程式碼段,堆段。 棧是先進後出,而且分配的記憶體很少,但是速度很快,通常用於儲存一些標量,例如(int,string,boolean)因為這些已經知道他的記憶體大小,所以可以直接放到棧中。而物件,陣列等一些不知道大小的變數,那麼就會存放到堆
java面向物件,類與物件關係
1.java面向物件 面向物件是一種開發模式,但最早使用的開發模式是面向過程 面向過程:指的是針對某一個問題單獨提出解決方案以及程式碼開發 即是:面向過程的方法寫出來的程式是一份蛋炒飯 恰巧你不愛吃雞蛋,只愛吃青菜的話,那麼唯一的辦法就是全部倒掉,重新做一份青菜
PHP學習——28 PHP面向物件(抽象類與抽象方法、介面的實現)
一、抽象類與抽象方法 <?php // 任何一個類,如果它裡面至少有一個方法是被宣告為抽象的,那麼這個類就必須被宣告為抽象的。 abstract class Person // 定義為抽象的類不能被例項化。 { public $name; public function __co
C++中 類與物件,類的定義,類的作用域,類中成員,this指標
概要 這篇文章主要內容是關於類與物件,類的定義,類的作用域,類中成員,this指標。寫的比較粗,後期有時間再改。 什麼是類? 對於類,我認為最早的發言人還是亞里士多德。他歸納事物的方法就是這是什麼(屬性)、能幹什麼(方式)、 起個名字(物件名) 、歸類(抽象)
Java中類,物件,方法的記憶體分配
以下針對引用資料型別: 在記憶體中,類是靜態的概念,它存在於記憶體中的CodeSegment中。 當我們使用new關鍵字生成物件時,JVM根據類的程式碼,去堆記憶體中開闢一塊控制元件,存放該物件,該物件擁有一些屬性,擁有一些方法。但是同一個類的物件和物件之間
mysql中char,varchar與text類型的區別和選用
數據庫服務器 填充 處理 sdn ext 支持 內容 總結 ace 關於char,varchar與text平時沒有太在意,一般來說,可能現在大家都是用varchar。但是當要存儲的內容比較大時,究竟是選擇varchar還是text呢?不知道。。。。。。 text 、 cha
php中對象類型與數組之間的轉換
from ech php json simple imp 對象 rom AD 1.剛看視頻學習的時候看到一個困擾很久的問題, 有時候我們在進行做項目的時候會碰到的一個小問題。舉一個小例子。 獲取一個xml文件裏面的數據。 xml.xml文件如下:
day17 面向物件03 類與類之間的關係
類與類之間的關係依賴關係 在方法中給方法傳遞一個物件. 此時類與類之間的關係是最輕的關聯關係(組合, 聚合) def __init__(self, name, xxxList =None): self.xxxList = xxxList def __init__(self, n
day17,類與類的關係
一,類與類之間的關係: 依賴關係: 在方法中給方法傳遞一個物件,此時類與類之間的關係是最輕的。 關聯關係(組合,聚合),通過屬性設定來維護兩個物件的關係 def __init__(): self.stuList = [] def __init__():
JAVA基礎之類和物件以及類與類之間的關係
面向物件是當前軟體開發的主流設計規範,是一種程式語言模式。 面向物件主要包括面型物件分析,面型物件設計,面型物件程式設計。 面型物件分析就是以面向物件“類”的概念去認識問題,分析問題。 1.下面舉一個很簡單的例子,介紹如何建立一個類,以及如何建立類的物件,構造方法,自己定義的方法。
PHP中CGI,FastCGI,PHP-CGI與PHP-FPM對比
CGICGI全稱是“公共閘道器介面”(Common Gateway Interface),HTTP伺服器與你的或其它機器上的程式進行“交談”的一種工具,其程式須執行在網路伺服器上。CGI可以用任何一種語言編寫,只要這種語言具有標準輸入、輸出和環境變數。如php,
python 面向物件(三)類與類之間的關係
###################總結################# 1. 依賴關係 執行某個動作的時候. 需要xxx來幫助你完成這個操作. 此時的關係是最輕的. 隨時可以更換另外一個東西來完成此操作 class Ren(): def play(self,toos):
讀《深入 PHP 面向物件、模式與實踐》2,單例模式
1,單例模式,138頁 問題:一個物件應該可以被系統中的任何物件使用。 這個物件不應該被儲存在會被覆寫的全域性變數中。 系統
resultMap中jdbcType中屬性,javaType與jdbcType的對應關係
Java Type JDBC Type String CHAR String
java面向物件(類與物件,區域性變數成員變數,基本型別和引用型別作為引數傳遞)
一.類和物件的區別 類是對某一類事物的抽象描述,而物件用於表示現實中該類事物的個體 可以將玩具模型看作是一個類,將一個個玩具看作物件,從玩具模型和玩具之間的關係便可以看出類與物件之間的關係。類用於描述多個物件的共同特徵,它是物件的模板。物件用於描述現實中的個體,它是類的例項 二.區域性變數和成員變數
類物件,類名.class與類名.this
轉自:http://blog.csdn.net/cto_51/article/details/8962357 1.當在內部類中使用this指的就是內部類的物件, 為了訪問外層類物件,就可以使用外層類名.this來訪問。 2. 在java中,每個class都有一個相
php中new一個類物件的兩種寫法
$obj = new $class_name($aff_id,$this); //1、php中,如果變數值是一個類名,可以直接new這個變數,即相當於new這個類$obj = new LinkFeed
Java中的集合類與物件的判空
1.集合類Array、List、Map、Set的判空 a.List進行判空 //判斷關聯的積分項是否為空,若不為空,則插入資料庫 if(pointsItemList != null && !pointsItemList.isEmp
js中eval,arguments與異常處理的用法-基礎知識總結------彭記(017)
報錯 字符串 nts 字符 number 拖動 ron cnblogs 數組 eval的使用: <script> /*eval的作用: * 1.將字符串當成js代碼來執行 * 2.可以將json格式的字符串轉換為js對象*/
2017-9-23C#筆記(類的索引,事件,運算符,this訪問器,派生,分部類,抽象類,封閉類,靜態類,類與結構的不同)
追溯 {} 矩形 bst 關鍵字 特定 類對象 direct 派生類的構造函數 1.類的索引 索引是一組get和set鋒訪問器,支持按照飲用數組元素的方法來引用對象.索引通常便是多個數據成員,並且它總是以雷類的事例成員的方式存在.聲明索引的方法: 返回類型 this