当前位置: 首页 > news >正文

建站为应用技术长沙有实力的关键词优化价格

建站为应用技术,长沙有实力的关键词优化价格,吉林省住房和城乡建设部网站,扬中潘杰書接上回:後端開發技術教學(四) 數據交互延伸-CSDN博客 必要資源: trae中文版下載網址: TRAE - The Real AI Engineer phpStudy 2018 : phpStudy - Windows 一键部署 PHP 开发环境 小皮出品 前言 大家好,我是小楓。上期我們把表單提交即數…

書接上回:後端開發技術教學(四) 數據交互延伸-CSDN博客

必要資源:

trae中文版下載網址: TRAE - The Real AI Engineer

phpStudy 2018 : phpStudy - Windows 一键部署 PHP 开发环境 · 小皮出品


前言

        大家好,我是小楓。上期我們把表單提交即數據上傳的全過程完整的講解了一遍。相信大家對數據交互也有一定的了解了。那麼我們這期將會介紹一下魔術方法、類、序列化這3種概念。

        我們將會以這篇文章結束後端PHP篇,下一期將會是全新的系列——後端python系列。


目录

前言

一、類與對象

1.1 操作對象

1.2 創建對象

1.3 基本框架

二、序列與反序列化

2.1  serialize()  序列化

2.2  unserialize()  反序列化

三、魔術方法

3.1  __construct()    構造方法

3.2  __destruct()  析構方法

3.3  __sleep()方法

3.4  __wakeup()方法

四、小結


一、類與對象

        類是個抽象的概念,用來描述具有相同屬性和方法的對象的集合。類只是模版,可以說對象就是類

        對象是類的實例,打個比方: 人是一個"類",而"小楓"則是具體存在的一個對象(人=小楓)。只是每個人 (類與對象) 的 身高體重 (屬性) 方面有不同,或有的人會彈琴、有的人會跳舞 (功能)

        類的作用在於: 組織代碼塊,讓程序更靈活、易維護。

        1.1 操作對象

在類中選對象,而對象就是類的實例化。通過對象操作:

1.) 屬性 (以變量更改數據)   2.) 方法 (以函數付予功能)

JS與PHP的對象語法
                         JS                          PHP
               對象名.屬性名                 對象名->屬性名
               對象名.方法名                 對象名->方法名
$us->name;	       //訪問$us(對象)的name(屬性)
$this->height;     //訪問$this(當前類的對象)的name(屬性)
$fong->say();      //執行$fong(對象)中的say()函數(功能)

        1.2 創建對象

//類的實例化=創建一個對象
$fong=new <類名>("xiaofong");	 //在類裡創建一個名為xiaofong的對象
$fong=new user("xiaofong");	     //在user(類)裡創建一個名為xiaofong的對象::$this = 默認為當前類的對象
::即如果user(類)裡以"xiaofong"為對象,$this=$fong(即xiaofong)

        1.3 基本框架

        類中的屬性和功能都分為2種,1種是所有人都可以訪問或使用的 ; 第二種是類內部命令才可以操作的。

class user{	    //創建名為user的類​	​	::屬性	(數據)    以變量為屬性附上數據(可留空)​	public $name="xiaofong";	//public=公共的,在任何地方都可以訪問到該變量
​	protected $height=180;	    //protected=受保護的,只能在類的內部和子類中訪問到該變量
​	private $weight=150;	    //private=私有的,只能在類的內部能訪問到該變量private $IQ;    //可只寫變量,不寫數據##private & protected = 在class(類) *裡面* 以對象語法引用,且要用$this(自己)為對象才可訪問到。​	::方法	(功能)    以函數為對象附上功能​	public function say(){	    //公用的函數
​		echo $this->weight;	    //$this = 對象為自己。對象不是自己會報錯//在class{}外面使用echo $weight是不會輸出180的,因為權限不足。
​	}
}$fong=new user();    //創建對象$fong以替代user(類)
echo $fong->name;
::輸出:xiaofong

二、序列與反序列化

        序列化類的操作只會作用於對象屬性(變量),不會作用於功能(函數)

        2.1  serialize()  序列化

變量中複雜的數組或對象拆分成字符串,以便數據存儲到數據庫中或傳遞到其他地方。

class user{public $name="xiaolin";public $age=18;private $money=1000;
}$fong=new user("xiaolin");
var_dump (serialize($fong));
::將user(類)拆成字符串  

        

A="拆解的數據"        以B="變量"

A的類型 : A的長度 : A的內容 A中的 變量/數組 數量 : { B的類型 : B的長度 : B的內容 ; 值的類型 : 值的長度 : 值的內容 ; (下一組變量也是一樣)

**private / protected的變量排列方法則與public的不一樣  (上面的是public的排列方法)

                        數據標識                      代表的類型
                             O                          對象
                             a                          數組

                             s

                         字符串
                             i                          數字
                             b                    bool (true/false)
                             N                         空對象

        2.2  unserialize()  反序列化

        就是序列化的相反——將字符串變回複雜的數組或對象,如從數據庫或其他地方取出對象。原本是甚麼樣的,反序列化後就長甚麼樣。

echo (unserialize("O:4:"user":3:{s:4:"name";s:7:"xiaolin";s:3:"age";i:18;s:11:" user money";i:1000;}"));
::輸出:
class user{public $name="xiaolin";public $age=18;private $money=1000;
}

三、魔術方法

        魔術方法類似於已定義的函數,但其不像函數一樣需要顯式調用,而是在特定的情況下會自動被調用。以2個下劃線(__)開頭,後面寫方法名稱[__construct() __destruct() 等等]。

        3.1  __construct()    構造方法

        當創建新對象(new)時,該方法會自動被調用用於初始化對象的狀態或執行其他必要的操作。類似 if、elseif等條件指令,只不過if、elseif的運行條件是條件為真,而__construct()的運行條件是當創建新對象而已。

//構造方法
class user{	public $name="xiaofong";public function __construct($name){	    //當對象被實例化(創建)時,自動執行
​	    echo "構造方法被執行了";      //不只執行這個,初始化的過程沒有顯示
​	    echo $this->name=$name:	    //指向當前對象的name屬性,並把$name附給對象的name屬性
}::當對象被new創建之後,__construct()命令會被自動執行,將$name(xiaofong)附給新對象的name屬性new user("fong");
::輸出:構造方法被執行了xiaofong    //new完自動執行,不用調用

        3.2  __destruct()  析構方法

        跟__construct()差不多。當對象被銷毀時自動執行,以釋放資源。

class user{	public function __destruct(){	//當對象被銷毀時自動執行
​	    echo "析構方法被執行了";     //不只執行這個,釋放資源的過程沒有顯示}
}
del user("fong");
::輸出:析構方法被執行了    //對象被刪除後自動執行

        3.3  __sleep()方法

        當對象被序列化( serialize() )時自動被調用。用於指定哪些數據需要被序列化 (敏感數據),哪些不用(普通數據) ; 或者切斷與數據庫的連接。

        通過__sleep()方法,我們確保只有指定屬性被序列化,而別的屬性則被排除在外。這對於管理臨時資源或敏感信息時特別有用。

//用以返回我們要反序列化的東西,即序列化的結果
class user{private $password;public $name="xiaofong";public function __sleep(){	    
​	    echo "當外部使用serialize()時會調用這裡的__sleep方法\n";​    	return array('password');	 //必須返回一個數值,不然會報錯。::裡面的元素表示要序列化的變量(除此之外,其他變量一律不執行序列化)}$this->password=1234567890
}
​						
$fong=new user("xiaofong");
serialize($fong);
::輸出:O:4:"user":1:{s:8:"password";i:10:1234567890;}   //只序列化$password,而不序列化$name

        3.4  __wakeup()方法

        與__sleep()方法相反,在對象被反序列化時自動調用。此方法可重新建立數據庫連接,或執行其他初始化操作。

        用法與__sleep()差不多,同理可證也。

四、小結

        上面序列化與反序列化相關的技術,會涉及到CTF漏洞利用哈,這個以後會教給大家,所以大家一定一定要掌握好哈。

         而其他的,大家只需要記住它們的功能和運作邏輯就可以了,實操可以讓AI幫忙寫代碼,具體的之前已經說過了,這裡就不多說了。接下來我們會開始研究後端python、數據庫mysql以及分析漏洞哈。大家敬請期待了。


Trae AI寫代碼:後端開發技術教學(一) [附2025最新可用 phpstudy2018下載鏈接] -CSDN博客

CTF漏洞訓練埸:BUUCTF在线评测

http://www.dtcms.com/a/453639.html

相关文章:

  • 内网隧道突破:红队实战指南
  • 宿州北京网站建设保亭网站建设
  • Java-142 深入浅出 MySQL Spring事务失效的常见场景与解决方案详解(4)
  • 网站优化培训好学吗公司网站变更域名
  • 【开题答辩全过程】以 安全电子选举系统的设计与实现为例,包含答辩的问题和答案
  • ESP32项目(三、控制继电器,伺服电机,舵机)
  • Python 3 内置函数详解
  • Spring AI快速入门以及项目的创建
  • 微网站制作工具有哪些霞浦建设局总规网站
  • 免费微商城网站建设网站开发团队人员构成
  • 个人网页简单模板下载seo是怎么优化的
  • 杭州有实力的网站开发直接通过域名访问wordpress
  • 多目标识别YOLO :YOLOV3 原理
  • 【Qt】QSS
  • 反射还是代码生成?Go反射使用的边界与取舍|Go语言进阶(11)
  • 国际外贸网站建设前端自适应模板
  • 网站建设代码流程花店网站建设个人小结
  • 德阳建设公司网站网站制作里的更多怎么做
  • HandBrake:视频压缩工具
  • 建设部门的网站wordpress图片批量上传插件下载
  • 致远OA配置HTTPS访问避坑帖
  • 快速搭建网站视频wordpress托管在哪里
  • AssemblyScript 入门教程(5):深入理解 TypedArray
  • 【PCB电路设计】常见元器件简介(电阻、电容、电感、二极管、三极管以及场效应管)
  • STM32G474单片机开发入门(六)定时器TIMER详解及实战含源码
  • C++进阶(9)——智能指针的使用及其原理
  • 个人写HTOS移植shell
  • 【开发工具】Windows1011远程Ubuntu18及以上桌面
  • 输入法网站设计怎么自己制作图片
  • STM32 Flash 访问加速器详解(ART Accelerator)