php5.3介紹
Jun 08, 2016 pm 05:32 PMPHP?5.3?介紹
PHP?2008?魁北克-?Ilia?Alshanetsky
?.?新版本的特性
*?兼職老版本下的代碼
*?重點(diǎn)主要放在現(xiàn)有的功能的改進(jìn)
*?更少的bug
*?更快的發(fā)布周期
1.?命名空間(Namespaces)
*?PHP5.3最大的新功能
*?完全支持名字空間特征
*?大部分的功能的執(zhí)行在編譯時(shí)
*?簡(jiǎn)化命名慣例
1)?更清晰的代碼
????不使用?Namespaces
????function?MY_wrapper()?{}
????class?MY_DB?{}
????define(''MY_COMM_STR'',?'''');
???
????MY_wrapper();
????new?MY_DB();
????MY_COMM_STR;
2)?使用?Namespaces
???
????namespace?MY;
???
????function?wrapper()?{}
???
????class?DB?{?}
???
????const?CONN_STR?=?'''';
???????????
???
????use?MY?AS?MY;
???
????wrapper();
???
????new?DB();
???
????CONN_STR;
???
3)?一個(gè)文件中多個(gè)名字空間
???
????namespace?LIB;
???
????class?MYSQL?{}
????class?SQLite?{}
???
????$b?=?new?SQLite(;
???
????namespace?LIB_EXTRA;
???
????class?MScrypt?{}
???
????$a?new?MScrypt();
???
????var_dump(
????????get_class($a),
????????get_class($b)
????};
???
????//?result:
????//?string(18)?"LIB_EXTRA::MScrypt"
????//?string(11)?"LIB::SQLite"
4)?名字空間的層級(jí)
????namespace?foo;
???
????function?strlen($foo)?{?return?htmlspecialchars($foo);?}
???
????echo?strlen("test");?//?test
????echo?::strlen("test")?//?4
????echo?namespace::strlen("test");?//?test
???
????*?function,?class?和?constant?引用在一個(gè)名字空間中首先指向這個(gè)名字空間,?其次才是一個(gè)全局的范圍
5)?名字空間?&?自動(dòng)引入
????function?__autoload($var)?{?var_dump($var);?}?//?LIB::foo
????require?"./ns.php";
????/**
?????????namespace?LIB;
?????new?foo();
?????>
????*/
*?__autoload()?將處理為和名字空間的類名一起。
*?autoload?僅在?class?不在名字空間和全局范圍內(nèi)存在時(shí)觸發(fā)。
*?__autoload()?聲明在一個(gè)名字空間中將不別調(diào)用!
6)?其他的名字空間的語(yǔ)法技巧
????namespace?really::long::pointlessly::verbose::ns;
???
????__NAMESPACE__;?//?當(dāng)前的名字空間名稱
???
????class?a?{}
???
????get_class(?new?a()?);?//?really::long::pointlessly::verbose::ns::abs
???
????use?really::long::pointlessly::verbose::ns::a?AS?b;?//?從一個(gè)名字空間引用class
???
2.?改進(jìn)的性能
*?md5()?速度提高了大概10-15%
*?引擎中更好的堆棧實(shí)現(xiàn)
*?常量移到只讀內(nèi)存區(qū)
*?改進(jìn)Exception處理(更簡(jiǎn)單?&?更少的代碼)
*?調(diào)用?(require/include)_once?去掉了使用open(2)(linux下的c函數(shù))
*?使用gcc4編譯的二進(jìn)制更小更快
整體性能提高?5-15%
3.?新的語(yǔ)言特性
1)?__DIR__
*?引入?__DIR__?magic常量?定位腳本的目錄
????echo?dirname(__FILE__);?//?
???
????/*?vs?*/
???
????echo?__DIR__;?//?>=?5.3
2)??:??操作符
*?允許從2個(gè)值的or/and表達(dá)式快速的獲取一個(gè)非空的值
???
????$a?=?true??:?false;?//?true;
????$a?=?false??:?true;?//?true;
????$a?=?""??:?1;?//?1
????$a?=?0??:?2;?//?2
????$a?=?array()??:?array(1);?//?array(1);
????$a?=?strlen("")??:?strlen("a");?//?1
???
3)?__callStatic()
???
????*?等價(jià)于?__call()?,?但它是為調(diào)用靜態(tài)方法準(zhǔn)備的
???
????class?helper
????{
????????static?function?__callStatic($name,?$args){
????????????echo?$name.''(''.implode('',''?$args).'')'';
????????}???????
????}
???
????helper::test("foo",?"bar");?//?test(foo,bar);
//?動(dòng)態(tài)的函數(shù)/方法調(diào)用有點(diǎn)慢...
?
?4)?動(dòng)態(tài)的調(diào)用靜態(tài)方法
?
*?php?現(xiàn)在允許?動(dòng)態(tài)的調(diào)用靜態(tài)的方法
???
????class?helper
????{
????????static?function?foo(){
????????????echo?__METHOD__;`
????????}???
????}
???
????$a?=?"helper";
????$b?=?"foo";
???
????$a::$b();?//?helper::foo
//?動(dòng)態(tài)的函數(shù)/方法調(diào)用有點(diǎn)慢...
5)?延遲靜態(tài)綁定
*?靜態(tài)處理從編譯時(shí)延遲到執(zhí)行時(shí)
???
????class?A
????{
????????public?static?function?whoami(){
????????????echo?__CLASS__;???
????????}
???????
????????public?static?function?identity(){
????????????self::whoami();???
????????}
????}
???
????class?B?extends?A
????{
????????public?static?function?whoami(){
????????????echo?__CLASS__;
????????}
????}
???
????B::identity();?//?A?
???
???
????class?A
????{
????????public?static?function?whoami(){
????????????echo?__CLASS__;???
????????}
???????
????????public?static?function?identity(){
????????????static::whoami();???
????????}
????}
???
????class?B?extends?A
????{
????????public?static?function?whoami(){
????????????echo?__CLASS__;
????????}
????}
???
????B::identity();?//?B?=?5.3
???
*?小心使用操作碼緩存,沒有向后兼容
6)?MySQLInd
*?特殊的,高速的專門為PHP設(shè)計(jì)的MySQL調(diào)用庫(kù)接口
*?更好的性能
*?內(nèi)存的使用優(yōu)化
*?內(nèi)置的驅(qū)動(dòng)(不是適應(yīng)性的再次擴(kuò)展)
*?Many?future?options?due?to?tight?integration?with?PHP
*?目前還沒有PDO_MySQL?支持?mysql(i)?only?for?now
7)?INI?Magic
*?CGI/FastCGI?支持".htaccess"?形式的INI控制
*?用戶可以自己設(shè)定每個(gè)目錄的INI在php.ini中通過(guò)[PATH=/var/www/domain.com]設(shè)定
*?優(yōu)化錯(cuò)誤處理
*?允許用戶使用INI變量和常量任何定義的INI文件中
*?其他幾個(gè)小的優(yōu)化
????用戶自定義的php.ini(.htaccess)?文件名.?默認(rèn)為".user.ini"
????user_ini.filename?=?".user.ini"
禁止這個(gè)特性?設(shè)置這個(gè)選項(xiàng)為空值
????用戶自定義php.ini?的緩存失效期(time-to-live)?秒數(shù).?默認(rèn)is?300s?(5分鐘)
????user_ini.cache_ttl?=?300s
???
????[PATH=/var/www/domain.com]
????variables_order?=?GPC
????safe_mode?=?1
????[my?varibles]
????somevar?=?"1234"
????anothervar?=?${somevar}????;?anothervar?==?somevar
????[ini?arrays]
????foo[bar]?=?1
????foo[123]?=?2
????foo[]?=?3
8)?擴(kuò)展的?OpenSSL?函數(shù)
*?使用?OpenSSL?Digest?函數(shù)
????foreach?(openssl_get_md_methods()?as?$d)?{//?MD4,?MD5,?SHA512...?(12?all?in?all)
????????echo?$d.?"?-?".?openssl_digest("foo",?"md5");?//?acbd18db4cc2f85cedef654fccc4a4d8
????}
*?使用?OpenSSL?加密函數(shù)
????//?BF-CBC,?AES-256?CFB1...?(54?all?in?all)
????foreach(openssl_get_cipher_methods()?as?$v)?{
????????$val?=?openssl_encrypt("value",?$v,?"secret");
????????openssl_decrypt($val,?$v,?"secret");?//?value
????}
*?擴(kuò)展的?openssl_pkey_new()?和?openssl_pkey_get_details()
函數(shù)?允許訪問(wèn)?內(nèi)部的?DSA,?RSA?和?DH?密匙.
其目標(biāo)在PHP中實(shí)現(xiàn)一個(gè)簡(jiǎn)單的OpenId
?9)?SPL(Standard?PHP?Library)?優(yōu)化
*?優(yōu)化嵌套的目錄迭代次數(shù)由文件系統(tǒng)迭代
*?引入?GlobIterator
*?各種各樣的數(shù)據(jù)結(jié)構(gòu)類:?雙鏈表,?堆棧,?隊(duì)列,?堆,?小型堆,?大型堆,?優(yōu)先級(jí)隊(duì)列
?
*?其他的很繞口的一些特征
10)?時(shí)間處理進(jìn)行擴(kuò)展了和添加
*?可控制的?strtotime()?由?date_create_from_format()實(shí)現(xiàn)
???
????$date?=?strtotime("08-01-07?00:00:00");
????var_dump(date("Y-m-d",?$date));?//?string(10)?"2008-01-07"
????$date?=?date_create_from_format("m-d-y",?"08-01-07");
????var_dump($date->format(''Y-m-d''));?//?string(10)?"2007-08-01"
*?添加了?date_get_last_errors(),并且返回時(shí)間語(yǔ)法分析的錯(cuò)誤和警告
????array(4)?{
????????["warning_count"]?=>?int(0)
????????["warnings"]?=>?array(0)?{?}
????????["error_count"]?=>?int(2)
????????["errors"]=>
????????????array(2)?{
????????????????[2]=>?string(40)?"The?separation?symbol?could?not?be?found"
????????????????[6]=>?string(13)?"Trailing?data"
????????????}
????}
?11)?getopt()?優(yōu)化
*?影響?Windows?平臺(tái)
*?本地的執(zhí)行不依賴于本地getopt()實(shí)現(xiàn).
*?跨平臺(tái)支持長(zhǎng)選項(xiàng)?(--option)
????//?input:?--a=foo?--b?--c
????var_dump(getopt("",?array("a:","b::","c")));
????/*?output:?array(3)?{
????????["a"]=>
????????string(3)?"foo"
????????["b"]=>
????????bool(false)
????????["c"]=>
????????bool(false)
????}?*/
?12)?XSLT?Profiling
*?引入?Xslt?Profiling?通過(guò)?setProfiling()實(shí)現(xiàn)
????$xslt?=?new?xsltprocessor();
????$xslt->importStylesheet($xml);
????$xslt->setProfiling("/tmp/profile.txt");
????$xslt->transformToXml($dom);
???
????Resulting?In:
????number?????????match?????name?????mode?????Calls?????Tot?100us?Avg
????????0?????????date?????????????????????????5?????????58???????11
????????????????????Total?????????????????????5?????????58
?13)?E_DEPRECATED?標(biāo)記
*?怎么樣將一個(gè)php發(fā)行為一個(gè)沒有錯(cuò)誤的模式??廢棄
*?E_DEPRECATED用來(lái)指定廢棄的功能,或許未來(lái)的版本中會(huì)消除。
?14)?垃圾回收器
*?為復(fù)雜和長(zhǎng)時(shí)間運(yùn)行腳本的執(zhí)行結(jié)束周期釋放內(nèi)存的清理
?
????????gc_enable();?//?允許垃圾回收
????????var_dump(gc_enabled());?//?true
????????var_dump(gc_collect_cycles());?//?某個(gè)元素的清理
????????gc_disable();?//?禁止垃圾回收
???????
?15)?NOWDOC
*?一個(gè)?HEREDOC?不再進(jìn)行轉(zhuǎn)譯
????????HEREDOC
????$foo?=?ONE
????this?is?$fubar
????ONE;
????/*?string(10)?"this?is"?*/
???
????????NOWDOC
&

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Mesej "Organisasi anda memerlukan anda menukar PIN anda" akan muncul pada skrin log masuk. Ini berlaku apabila had tamat tempoh PIN dicapai pada komputer menggunakan tetapan akaun berasaskan organisasi, di mana mereka mempunyai kawalan ke atas peranti peribadi. Walau bagaimanapun, jika anda menyediakan Windows menggunakan akaun peribadi, sebaiknya mesej ralat tidak akan muncul. Walaupun ini tidak selalu berlaku. Kebanyakan pengguna yang mengalami ralat melaporkan menggunakan akaun peribadi mereka. Mengapa organisasi saya meminta saya menukar PIN saya pada Windows 11? Ada kemungkinan akaun anda dikaitkan dengan organisasi dan pendekatan utama anda adalah untuk mengesahkan perkara ini. Menghubungi pentadbir domain anda boleh membantu! Selain itu, tetapan dasar tempatan yang salah konfigurasi atau kunci pendaftaran yang salah boleh menyebabkan ralat. Sekarang ni

Windows 11 membawa reka bentuk yang segar dan elegan ke hadapan antara muka moden membolehkan anda memperibadikan dan menukar butiran terbaik, seperti sempadan tingkap. Dalam panduan ini, kami akan membincangkan arahan langkah demi langkah untuk membantu anda mencipta persekitaran yang mencerminkan gaya anda dalam sistem pengendalian Windows. Bagaimana untuk menukar tetapan sempadan tetingkap? Tekan + untuk membuka apl Tetapan. WindowsSaya pergi ke Pemperibadian dan klik Tetapan Warna. Perubahan Warna Tetingkap Sempadan Tetapan Tetingkap 11" Lebar="643" Tinggi="500" > Cari pilihan Tunjukkan warna aksen pada bar tajuk dan sempadan tetingkap, dan togol suis di sebelahnya. Untuk memaparkan warna aksen pada menu Mula dan bar tugas Untuk memaparkan warna tema pada menu Mula dan bar tugas, hidupkan Tunjukkan tema pada menu Mula dan bar tugas

Secara lalai, warna bar tajuk pada Windows 11 bergantung pada tema gelap/terang yang anda pilih. Walau bagaimanapun, anda boleh menukarnya kepada mana-mana warna yang anda mahu. Dalam panduan ini, kami akan membincangkan arahan langkah demi langkah untuk tiga cara mengubahnya dan memperibadikan pengalaman desktop anda untuk menjadikannya menarik secara visual. Adakah mungkin untuk menukar warna bar tajuk tetingkap aktif dan tidak aktif? Ya, anda boleh menukar warna bar tajuk tetingkap aktif menggunakan apl Tetapan, atau anda boleh menukar warna bar tajuk tetingkap tidak aktif menggunakan Registry Editor. Untuk mempelajari langkah-langkah ini, pergi ke bahagian seterusnya. Bagaimana untuk menukar warna bar tajuk dalam Windows 11? 1. Tekan + untuk membuka tetingkap tetapan menggunakan apl Tetapan. WindowsSaya pergi ke "Peribadikan" dan kemudian

Lakaran kecil bar tugas boleh menjadi menyeronokkan, tetapi ia juga boleh mengganggu atau menjengkelkan. Memandangkan kekerapan anda menuding di atas kawasan ini, anda mungkin telah menutup tetingkap penting secara tidak sengaja beberapa kali. Kelemahan lain ialah ia menggunakan lebih banyak sumber sistem, jadi jika anda telah mencari cara untuk menjadi lebih cekap sumber, kami akan menunjukkan kepada anda cara untuk melumpuhkannya. Walau bagaimanapun, jika spesifikasi perkakasan anda boleh mengendalikannya dan anda menyukai pratonton, anda boleh mendayakannya. Bagaimana untuk mendayakan pratonton lakaran kecil bar tugas dalam Windows 11? 1. Menggunakan apl Tetapan ketik kekunci dan klik Tetapan. Windows klik Sistem dan pilih Perihal. Klik Tetapan sistem lanjutan. Navigasi ke tab Lanjutan dan pilih Tetapan di bawah Prestasi. Pilih "Kesan Visual"

Adakah anda melihat "Masalah berlaku" bersama-sama dengan pernyataan "OOBELANGUAGE" pada halaman Pemasang Windows? Pemasangan Windows kadangkala terhenti kerana ralat tersebut. OOBE bermaksud pengalaman di luar kotak. Seperti yang ditunjukkan oleh mesej ralat, ini ialah isu yang berkaitan dengan pemilihan bahasa OOBE. Tiada apa yang perlu dibimbangkan, anda boleh menyelesaikan masalah ini dengan penyuntingan pendaftaran yang bagus dari skrin OOBE itu sendiri. Pembetulan Pantas – 1. Klik butang “Cuba Semula” di bahagian bawah apl OOBE. Ini akan meneruskan proses tanpa gangguan lagi. 2. Gunakan butang kuasa untuk menutup paksa sistem. Selepas sistem dimulakan semula, OOBE harus diteruskan. 3. Putuskan sambungan sistem daripada Internet. Lengkapkan semua aspek OOBE dalam mod luar talian

Kecerahan skrin adalah bahagian penting dalam menggunakan peranti pengkomputeran moden, terutamanya apabila anda melihat skrin untuk jangka masa yang lama. Ia membantu anda mengurangkan ketegangan mata, meningkatkan kebolehbacaan dan melihat kandungan dengan mudah dan cekap. Walau bagaimanapun, bergantung pada tetapan anda, kadangkala sukar untuk mengurus kecerahan, terutamanya pada Windows 11 dengan perubahan UI baharu. Jika anda menghadapi masalah melaraskan kecerahan, berikut ialah semua cara untuk mengurus kecerahan pada Windows 11. Cara Menukar Kecerahan pada Windows 11 [10 Cara Diterangkan] Pengguna monitor tunggal boleh menggunakan kaedah berikut untuk melaraskan kecerahan pada Windows 11. Ini termasuk sistem desktop menggunakan monitor tunggal serta komputer riba. Jom mulakan. Kaedah 1: Gunakan Pusat Tindakan Pusat Tindakan boleh diakses

Kita semua mempunyai pilihan yang berbeza apabila ia berkaitan dengan penskalaan paparan pada Windows 11. Sesetengah orang suka ikon besar, ada yang suka ikon kecil. Walau bagaimanapun, kita semua bersetuju bahawa mempunyai penskalaan yang betul adalah penting. Penskalaan fon yang lemah atau penskalaan berlebihan imej boleh menjadi pembunuh produktiviti sebenar apabila bekerja, jadi anda perlu tahu cara menyesuaikannya untuk memanfaatkan sepenuhnya keupayaan sistem anda. Kelebihan Zum Tersuai: Ini adalah ciri yang berguna untuk orang yang mengalami kesukaran membaca teks pada skrin. Ia membantu anda melihat lebih banyak pada skrin pada satu masa. Anda boleh membuat profil sambungan tersuai yang digunakan hanya pada monitor dan aplikasi tertentu. Boleh membantu meningkatkan prestasi perkakasan kelas rendah. Ia memberi anda lebih kawalan ke atas perkara yang terdapat pada skrin anda. Cara menggunakan Windows 11

Proses pengaktifan pada Windows kadangkala mengambil giliran secara tiba-tiba untuk memaparkan mesej ralat yang mengandungi kod ralat ini 0xc004f069. Walaupun proses pengaktifan adalah dalam talian, beberapa sistem lama yang menjalankan Windows Server mungkin mengalami masalah ini. Lakukan semakan awal ini dan jika ia tidak membantu anda mengaktifkan sistem anda, lompat ke penyelesaian utama untuk menyelesaikan isu tersebut. Penyelesaian – Tutup mesej ralat dan tetingkap pengaktifan. Kemudian, mulakan semula komputer anda. Cuba semula proses pengaktifan Windows dari awal lagi. Betulkan 1 – Aktifkan dari Terminal Aktifkan sistem Windows Server Edition dari terminal cmd. Peringkat – 1 Semak Versi Pelayan Windows Anda perlu menyemak jenis W yang anda gunakan
