在許多框架和MVC中都能夠看到PHP SPL的身影, PHP SPL 在很多實際應用都佔了很大的比重
雙向鍊錶
<?php $obj = new SplDoublyLinkedList(); $obj->push(1); $obj->push(2); $obj->push(3); $obj->unshift(10); //unshifit 替换双向链表的首部 $obj->rewind(); // 使用current 必须调用rewind,把节点指针指向bottom节点 $obj->next(); // next 指向下一个节点 $obj->prev(); // 指针指向上一个节点 echo $obj->current(); // 指针指向当前结点 if($obj->current()) { echo "y"; }else{ echo "n"; } if($obj->valid()){ //如果当前节点是有效节点 valid则返回true } $obj->pop(); //var_dump($obj); print_r($obj);
堆棧的使用
<?php $stack = new SplStack(); //实例化堆栈 $stack->push("a"); //向堆栈中加入数据 $stack->push("b"); $stack->push("c"); /* $stack->offsetSet(0,'C'); //堆栈的节点0是top 的节点,设置节点的值 $stack->rewind(); //双向链表的rewind和堆栈的rewind相反,堆栈的rewind使得当前指针指向TOP所在的位置,而双向链表调用之后指向bottom所在的位置 echo "qq".$stack->next(); // 堆栈的next与双向链表相反 echo "re".$stack->current()."</br>"; //echo "bo".$stack->bottom()."</br>"; //echo "top".$stack->top(); print_r($stack); */ //从TOP开始遍历 $stack->rewind(); while($stack->valid()){ echo $stack->key()."=>".$stack->current()."</br>"; $stack->next(); } $pop = $stack->pop(); echo $pop; //pop操作从堆栈里面提取出的最后一个元素(TOP位置),同时在堆栈删除该节点
隊列
$que = new SplQueue(); $que->enqueue("a"); // 入队列 $que->enqueue("b"); $que->enqueue("c"); //print_r($que); echo "bottom".$que->bottom()."</br>"; echo "top".$que->top(); $que->rewind(); $que->dequeue(); //出队列 //从 bottom 位置删除 print_r($que);
ArrayIterator
<?php$fruits = array( "apple" => "apple value", "orange" => "orange value", "grape" => "grape value"); //定义一个水果数组$obj = new ArrayObject($fruits); $it = $obj->getIterator(); // 用foreach 实现遍历数组foreach($it as $key => $value){ echo $key."->".$value."</br>"; } $it->rewind(); //必须要 rewind//用 while 来遍历数组while($it->valid()){ echo $it->key()."->".$it->current()."</br>"; $it->next(); }//跳过某些元素进行打印$it->rewind();if($it->valid()){ $it->seek(1); //寻找到1的元素 while($it->valid()){ echo $it->key()."->".$it->current()."</br>"; $it->next(); } }echo "</br>"; $it->rewind();//$it->ksort(); //进行排序 用key , //$it->rewind();$it->asort(); //按value 进行排序while($it->valid()){ echo $it->key()."->".$it->current()."</br>"; $it->next(); }
AppendIterator
<?php $array_a = new ArrayIterator(array('a','b','c')); //定义两个 ArrayIterator $array_b = new ArrayIterator(array('d','e','f')); $it = new AppendIterator(); $it->append($array_a); // 将ArrayIterator追加到Iterator里 $it->append($array_b); foreach($it as $key => $value){ echo $key."||".$value."</br>"; } //通过APPEND方法把迭代器对象添加到AppendIterator对象中 //把两个数组的 数值添加到一个Interator
MultipleIterator 將陣列組合成整個輸出
$idIter = new ArrayIterator(array('01','02','03')); $nameIter = new ArrayIterator(array('qq','ss','show')); $mit = new MultipleIterator(MultipleIterator::MIT_KEYS_ASSOC); $mit->attachIterator($idIter,"id"); $mit->attachIterator($nameIter,"name"); foreach($mit as $value){ print_r($value); }
File操作
date_default_timezone_get('PRC'); $it = new FilesystemIterator('.'); foreach($it as $value){ echo date("Y-m-d H:i:s",$value->getMtime())."</br>"; $value->isDir()?"<dir>":""; number_format($value->getSize()); echo $value->getFileName(); }

tostartaphpsession,usesesses_start()attheScript'Sbeginning.1)placeitbeforeanyOutputtosetThesessionCookie.2)useSessionsforuserDatalikeloginstatusorshoppingcarts.3)regenerateSessiveIdStopreventFentfixationAttacks.s.4)考慮使用AttActAcks.s.s.4)

會話再生是指在用戶進行敏感操作時生成新會話ID並使舊ID失效,以防會話固定攻擊。實現步驟包括:1.檢測敏感操作,2.生成新會話ID,3.銷毀舊會話ID,4.更新用戶端會話信息。

PHP会话对应用性能有显著影响。优化方法包括:1.使用数据库存储会话数据,提升响应速度;2.减少会话数据使用,只存储必要信息;3.采用非阻塞会话处理器,提高并发能力;4.调整会话过期时间,平衡用户体验和服务器负担;5.使用持久会话,减少数据读写次数。

PHPsessionsareserver-side,whilecookiesareclient-side.1)Sessionsstoredataontheserver,aremoresecure,andhandlelargerdata.2)Cookiesstoredataontheclient,arelesssecure,andlimitedinsize.Usesessionsforsensitivedataandcookiesfornon-sensitive,client-sidedata.

phpIdentifiesauser'ssessionSessionSessionCookiesAndSessionId.1)whiwsession_start()被稱為,phpgeneratesainiquesesesessionIdStoredInacookInAcookInAcienamedInAcienamedphpsessIdontheuser'sbrowser'sbrowser.2)thisIdallowSphptpptpptpptpptpptpptpptoretoreteretrieetrieetrieetrieetrieetrieetreetrieetrieetrieetrieetremthafromtheserver。

PHP會話的安全可以通過以下措施實現:1.使用session_regenerate_id()在用戶登錄或重要操作時重新生成會話ID。 2.通過HTTPS協議加密傳輸會話ID。 3.使用session_save_path()指定安全目錄存儲會話數據,並正確設置權限。

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

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

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!