电脑安全

您当前的位置:主页 > 电脑安全 >

php5.3介绍-网络编程

来源:[db:来源]标题:   名字    编辑:电脑技术全能网 时间:2019-09-19 06:21

原标题:php5.3介绍-网络编程
   PHP5.3先容PHP2008魁北克-IliaAlshanetsky.新版本的特征*兼职老版本下的代码*重点重要放在现有的功效的改良*更少的bug*更快的公布周期1.定名空间(Namespaces)*PHP5.3最大的新功效*完整支撑名字空间特点*大局部的功效的履行在编译时*简化定名通例1)更清楚的代码不应用NamespacesfunctionMY_wrapper(){}classMY_DB{}define(''MY_COMM_STR'','''');MY_wrapper();newMY_DB();MY_COMM_STR;2)应用NamespacesnamespaceMY;functionwrapper(){}classDB{}constCONN_STR='''';useMYASMY;wrapper();newDB();CONN_STR;3)一个文件中多个名字空间namespaceLIB;classMYSQL{}classSQLite{}$b=newSQLite(;namespaceLIB_EXTRA;classMScrypt{}$anewMScrypt();var_dump(get_class($a),get_class($b)};//result://string(18)"LIB_EXTRA::MScrypt"//string(11)"LIB::SQLite"4)名字空间的层级namespacefoo;functionstrlen($foo){returnhtmlspecialchars($foo);}echostrlen("test");//testecho::strlen("test")//4echonamespace::strlen("test");//test*function,class和constant援用在一个名字空间中起首指向这个名字空间,其次才是一个全局的范畴5)名字空间&主动引入function__autoload($var){var_dump($var);}//LIB::foorequire"./ns.php";/**<?phpnamespaceLIB;newfoo();?>*/*__autoload()将处置为和名字空间的类名一同。*autoload仅在class不在名字空间和全局范畴内存在时触发。*__autoload()申明在一个名字空间中将不别挪用!6)其余的名字空间的语法技能namespacereally::long::pointlessly::verbose::ns;__NAMESPACE__;//以后的名字空间称号classa{}get_class(newa());//really::long::pointlessly::verbose::ns::absusereally::long::pointlessly::verbose::ns::aASb;//从一个名字空间援用class2.改良的机能*md5()速率进步了大略10-15%*引擎中更好的客栈完成*常量移到只读内存区*改良Exception处置(更简略&更少的代码)*挪用(require/include)_once去掉了应用open(2)(linux下的c函数)*应用gcc4编译的二进制更小更快团体机能进步5-15%3.新的言语特征1)__DIR__*引入__DIR__magic常量定位剧本的名目echodirname(__FILE__);//<PHP5.3/*vs*/echo__DIR__;//>=5.32)?:操纵符*同意从2个值的or/and表白式疾速的猎取一个非空的值$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");//13)__callStatic()*等价于__call(),但它是为挪用动态方式预备的classhelper{staticfunction__callStatic($name,$args){echo$name.''(''.implode('',''$args).'')'';}}helper::test("foo","bar");//test(foo,bar);//静态的函数/方式挪用有点慢...4)静态的挪用动态方式*php当初同意静态的挪用动态的方式classhelper{staticfunctionfoo(){echo__METHOD__;`}}$a="helper";$b="foo";$a::$b();//helper::foo//静态的函数/方式挪用有点慢...5)耽误动态绑定*动态处置从编译时耽误到履行时classA{publicstaticfunctionwhoami(){echo__CLASS__;}publicstaticfunctionidentity(){self::whoami();}}classBextendsA{publicstaticfunctionwhoami(){echo__CLASS__;}}B::identity();//A<--php<5.3classA{publicstaticfunctionwhoami(){echo__CLASS__;}publicstaticfunctionidentity(){static::whoami();}}classBextendsA{publicstaticfunctionwhoami(){echo__CLASS__;}}B::identity();//B<--php>=5.3*警惕应用操纵码缓存,没有向后兼容6)MySQLInd*特别的,高速的特地为PHP计划的MySQL挪用库接口*更好的机能*内存的应用优化*内置的驱动(不是顺应性的再次扩大)*ManyfutureoptionsduetotightintegrationwithPHP*现在还没有PDO_MySQL支撑mysql(i)onlyfornow7)INIMagic*CGI/FastCGI支撑".htaccess"情势的INI操纵*用户能够本人设定每个名目的INI在php.ini中经过[PATH=/var/www/domain.com]设定*优化过错处置*同意用户应用INI变量和常量任何界说的INI文件中*其余几个小的优化用户自界说的php.ini(.htaccess)文件名.默许为".user.ini"user_ini.filename=".user.ini"制止这个特征设置这个选项为空值用户自界说php.ini的缓存生效期(time-to-live)秒数.默许is300s(5分钟)user_ini.cache_ttl=300s[PATH=/var/www/domain.com]variables_order=GPCsafe_mode=1[myvaribles]somevar="1234"anothervar=${somevar};anothervar==somevar[iniarrays]foo[bar]=1foo[123]=2foo[]=38)扩大的OpenSSL函数*应用OpenSSLDigest函数foreach(openssl_get_md_methods()as$d){//MD4,MD5,SHA512...(12allinall)echo$d."-".openssl_digest("foo","md5");//acbd18db4cc2f85cedef654fccc4a4d8}*应用OpenSSL加密函数//BF-CBC,AES-256CFB1...(54allinall)foreach(openssl_get_cipher_methods()as$v){$val=openssl_encrypt("value",$v,"secret");openssl_decrypt($val,$v,"secret");//value}*扩大的openssl_pkey_new()和openssl_pkey_get_details()函数同意拜访外部的DSA,RSA和DH密匙.其目的在PHP中完成一个简略的OpenId9)SPL(StandardPHPLibrary)优化*优化嵌套的名目迭代次数由文件体系迭代*引入GlobIterator*种种百般的数据构造类:双链表,客栈,行列,堆,小型堆,大型堆,优先级行列*其余的很绕口的一些特点10)时光处置停止扩大了和增加*可操纵的strtotime()由date_create_from_format()完成$date=strtotime("08-01-0700: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(),而且前往时光语法剖析的过错和忠告array(4){["warning_count"]=>int(0)["warnings"]=>array(0){}["error_count"]=>int(2)["errors"]=>array(2){[2]=>string(40)"Theseparationsymbolcouldnotbefound"[6]=>string(13)"Trailingdata"}}11)getopt()优化*影响Windows平台*当地的履行不依靠于当地getopt()完成.*跨平台支撑长选项(--option)//input:--a=foo--b--cvar_dump(getopt("",array("a:","b::","c")));/*output:array(3){["a"]=>string(3)"foo"["b"]=>bool(false)["c"]=>bool(false)}*/12)XSLTProfiling*引入XsltProfiling经过setProfiling()完成$xslt=newxsltprocessor();$xslt->importStylesheet($xml);$xslt->setProfiling("/tmp/profile.txt");$xslt->transformToXml($dom);ResultingIn:numbermatchnamemodeCallsTot100usAvg0date55811Total55813)E_DEPRECATED标志*怎样样将一个php刊行为一个没有过错的形式?放弃*E_DEPRECATED用来指定放弃的功效,或者将来的版本中会打消。14)渣滓接纳器*为庞杂和长时光运转剧本的履行停止周期开释内存的清算gc_enable();//同意渣滓接纳var_dump(gc_enabled());//truevar_dump(gc_collect_cycles());//某个元素的清算gc_disable();//制止渣滓接纳15)NOWDOC*一个HEREDOC不再停止转译HEREDOC$foo=<<<ONEthisis$fubarONE;/*string(10)"thisis"*/NOWDOC$bar=<<<‘TWO’thisis$fubarTWO;/*string(16)"thisis$fubar"*/4.其余优化*SQLite进级到3.5.6*40多个bug被修复*CGI/FastCGISAPI优化*种种流的优化*将来更多的优化<