日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 结构体_php基础知识集合

發布時間:2023/12/4 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 结构体_php基础知识集合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

微信公眾號:PHP在線

源碼

PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法

編譯器

編譯器就是將“一種語言(通常為高級語言)”翻譯為“另一種語言(通常為低級語言)”的程序
一個現代編譯器的主要工作流程:
源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (compiler) → 目標代碼 (object code) → 鏈接器 (Linker) → 可執行程序

非引用變量和引用變量

引用變量按址運算

function?test(){
????$a="1";
????$b?=&$a;
????$b="2";
????echo?$a;
}
存儲變量原理

首先,php的解析引擎是Zend引擎,。在zend引擎中是使用zval結構來存儲php變量的,zend是用c寫的,所以代碼中的結構定義也是c的語言結構,zval中包含有四個屬性,分別是value,type,refcount,is_ref。
value:知道一個union指針,用于存儲變量的值,支持的類型有
1)long:整型,不區別長短,統一為long,取值范圍是由編譯器位數來決定),double,str
2)double:浮點數,也是不區分float或者double,只有一種
3)結構體str:php在存儲字符串時,將字符串的內容和長度都存了起來,這是為了避免重復計算字符串的長度。php中的函數strlen,就是直接返回了這個長度。
4)hashTable:用于存放數組,課件php的數組效率是極快的,O(1),后面再介紹一下zend中hashtable的實現吧
5)obj:用于存放對象,我們看一下zend_object_value的定義,實際是一個handle(對象的唯一id)跟handles(存了對象里各種方法的指針的虛函數表)

type:type值是用來判斷value中的值,對應的,如下表:

然后,你會發現php的資源居然是存的long類型,那是因為,這個long存的是一個指針,內部數組的index或者是其他結構的資源,可以將其視為handle。

refcount:引用計數,為了減少 內存池的開銷和垃圾回收,加入了該字段,這樣在下一次用到同一個值的時候就會直接引用該值,然后refcount++就好,當你unset掉某個變量是也是會相應refcount--,直到為0時則會回收把它干掉

is_ref:是否為引用,1為引用,0為否。php中可以分為兩種變量,引用和非引用,非引用就是正常的賦值,但是引用的話是傳遞地址,需要在前面加上“&”,相當于指針,改變引用的值是會改變原來改地址的變量的值的。

Zend Engine

zend engine的出現使得php有了質的提高:
1、把邊解釋邊運行的方式變為先進行預編譯(compile),再執行(execute)的方式極大提高了php的運行效率。
2、使得執行效率大幅提高
3、由于實行功能分離,降低了模塊間的耦合度,擴展性大大加強
Zend Engine 最主要的特性就是把 PHP 的邊解釋邊執行的運行方式改為先進行預編譯(Compile),然后再執行(Execute)。這兩者的分開給 PHP 帶來了革命性的變化:執行效率大幅提高;由于實行了功能分離,降低了模塊間耦合度,可擴展性也大大增強。此時 PHP 已經能很方便的應付各種各樣的 BT 需求了,而伴隨 PHP 4.4.x ―可能是 PHP4 系列的最后一個分支―的發布,PHP 的大部分開發人員已經將注意力放在了 PHP5 或者 PHP6 上面,以后發布的基本上就是一些 Bug Fix Release。可以說第一代的 Zend Engine 是已經在站最后一班崗了

函數&方法

函數是面向過程編程的一個算法
方法是面向對象編程的一個業務邏輯
p.s. PHP不像Java那樣純粹的面向對象編程,他在支持面向對象的同時,保留了面向過程的編程方式,所以在PHP的項目里面,通常既有函數,又有類;

短連接 & 長連接

短連接:比如http;
長連接:比如websocket;

總結

以上是生活随笔為你收集整理的php 结构体_php基础知识集合的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。