±M·~¤V¶q¬I¤u³]pµ¡Ã®µ¡¹¢¡A¥]§t¦UºØµ¡Ã®¥¬ ±²Ã®µ¥¡A°ª½è·Pµ¡Ã®¡A¼Ë¦¡»ô | ![]() | Àu½èªoº£¤uµ{¡A¦U¦¡ªoº£¯»¨ê±M·~t³d»ù®æ¦X²z §K¶O¦ô»ù¡A¤½¹Dº¡·N |
[php] PHP·s¼W¥\¯à»¡©ú¡A¤¤Ä¶¥»(�) |
©ÐªF¡Gªü´f µoªí®É¶¡¡G2011-03-17 |
-- PHP5·s¼W¥\¯à»¡©ú¡A¤¤Ä¶¥»(¤@) ´Á«Ý¤w¤[ªºPHP5²×©ó¦b·í¦a®É¶¡7¤ë13¤é¥¿¦¡µo§G¤F¡CµL½×¹ï©óPHP»y¨¥¥»¨ÁÙ¬OPHPªº¥Î¤á¨ÓÁ¿¡APHP5µo§G³£ºâªº¤W¬O¤@Ó¨½µ{¸O¦¡ªºª©¥»¡C¦bPHP5µo§G¤§«eªº¦UÓPHPª©¥»´N¥H²³æªº»yªk¡BÂ×´Iªº®w¨ç¼Æ¥H¤Î·¥§Öªº¸}¥»¸ÑÄÀ°õ¦æ³t«×¡Aűo¤F³\¦h¶}µoªÌªº«C·ý¡A´X¥G¦¨¤F*NIX¥¥x¤Wº¿ïªºWEB¶}µo»y¨¥¡CµM¦Ó¡A¯¸¦b»y¨¥¥»¨¨¤«×¡APHPªº»yªk¡A¯S§O¬OOO¤è±ªº»yªk³]p¨Ã¤£§¹µ½¡A·íµM³o©MPHP»y¨¥ªº§@ªÌ¤@¶}©lªº³]p¥Øªº¦³Ãö¡C²³»¡©Pª¾¡APHP³Ì¶}©l¥u¬O¤@Ó¥ÎPerl¼g¦¨ªº¤@Ó¼ÒªO¨t²Î¡A¨ä«áªºµo®i«ä¸ô¤]¬OºÉ¥i¯à¬°§Ö³t¶}µoWEBµ{§Ç´£¨Ñ¤è«K¡C¤j¶qªº®w¨ç¼Æ¥[¤J¨ä¤¤¡A¦Ó»y¨¥¼Ò«¬ªºµo®i«h¬Û¹ï½wºC¡CÁöµM¦bPHP4¤¤¥[¤J¤F±¦V¹ï¶Hªº³]p¡A¦ý¨ä»y¨¥¼Ò«¬¨Ã¤£§¹µ½¡A¯Ê¥F½Ñ¦pºc³y¨ç¼Æ¡BªRºc¨ç¼Æ¡B©â¹³Ãþ¡]±µ¤f¡^¡B²§±`³B²zµ¥°ò¥»¤¸¯À¡C³o·¥¤j¨î¤F§Q¥ÎPHP¨Ó§¹¦¨¤j³W¼ÒÀ³¥Îµ{§Çªº¯à¤O¡C ¦ÓPHP5ªº½Ï¥Í¡A«h±q®Ú¥»¤W§ïÅܤFPHPªº¤Wz¹úºÝ¡CZend II ¤ÞÀºªº±Ä¥Î¡A§¹³Æ¹ï¹³¼Ò«¬¡B§ï¶iªº»yªk³]p¡C²×¨Ï±oPHP¦¨¬°¤@Ó³]p§¹³Æ¡B¯u¥¿¨ã¦³±¦V¹ï¹³¯à¤Oªº¸}¥»»y¨¥¡C§Ú̹wp¡APHP5ªº¥X²{¡A±N·|µ¹¾ãÓPHPªÀ°Ï±a¨Ó·sªº¤@½ü¦UºØ®w¡BÀ³¥Î¶}µo§ï¶iªº°ª®p¡C PHP5 ·s¯S©Ê(Á`·§) PHP5 ·s¨ç¼Æ ¨Ó·½ / Zend ½Ķ / EasyChen@phpe
Arrays: array_combine() - ¨Ï¥Î¤@ӼƲէ@¬°¯Á¤Þ¡A¥t¤@ӼƲէ@¬°È¨Ó³Ð«Ø¤@Ó·s¼Æ²Õ array_diff_uassoc() - ¨Ï¥Î¥Î¤á´£¨Ñªº¦^½Õ¨ç¼Æ¤ñ¸û¼Æ²Õªº¬Û²§µ{«×¡]¨Ï¥ÎÃB¥~ªº¯Á¤ÞÀˬd¡^ array_udiff() - ¨Ï¥Î¦^½Õ¨ç¼Æ¤ñ¸û¼Æ²Õªº¬Û²§µ{«× array_udiff_assoc() - ¤ñ¸û¼Æ²Õªº¬Û²§µ{«×¡]¨Ï¥ÎÃB¥~ªº¯Á¤ÞÀˬd¡^¡C¼Æ¾Ú³q¹L¦^½Õ¨ç¼Æ¤ñ¸û¡C array_udiff_uassoc() - ¤ñ¸û¼Æ²Õªº¬Û²§µ{«×¡]¨Ï¥ÎÃB¥~ªº¯Á¤ÞÀˬd¡^¡C¼Æ¾Ú³q¹L¦^½Õ¨ç¼Æ¤ñ¸û¡F¯Á¤ÞÀˬd¤]¥Ñ¦^½Õ¨ç¼Æ§¹¦¨¡C array_walk_recursive() - ½Õ¥Î¤@ӥΤá©w¸q¨ç¼Æ¹ï¼Æ²Õªº¨CÓ¤¸¯À¶i¦æ¹M¾ú¡C InterBase: ibase_affected_rows() - ªð¦^«e¤@Óquery¤¤¥Í®Äªºrow¼Æ ibase_backup() - ¦bservice manager¤¤ªì©l¤Æ¤@Óbackup¥ô°È¡A¨Ã¥ß§Yªð¦^ ibase_commit_ret() - ¦b¤£Ãö³¬ªº±¡ªp¤U¡ACommit¤@Ó¨Æ°È ibase_db_info() - ¨ú±o¼Æ¾Ú®wªºª¬ºA ibase_drop_db() - Drop¤@Ӽƾڮw ibase_errcode() - ªð¦^¿ù»~¥N½X ibase_free_event_handler() - ¨ú®ø¤@Ó¤wµù¥Uªº¨Æ¥ó¥y¬` ibase_gen_id() - ²K¥[named generator¨Ãªð¦^·sÈ ibase_maintain_db() - °õ¦æºûÅ@©R¥O ibase_name_result() - ±N¤@Ó¦W¦r«ü©w¨ì¤@Óµ²ªG¶° ibase_num_params() - ªð¦^prepared query¤¤°Ñ¼ÆªºÓ¼Æ ibase_param_info() - ªð¦^¤@Óprepared query¤¤¤@ӰѼƪº«H®§ ibase_restore() - ¦bservice manager¤¤ªì©l¤Æ¤@Órestore¥ô°È¨Ã¥ß§Yªð¦^ ibase_rollback_ret() - Rollback¤@ӨưȡA¨Ã«O¯d¨Æ°Èªº¤W¤U¤å¡]context¡^ ibase_server_info() - ¨ú±o¤@Ӽƾڮwªº«H®§ ibase_service_attach() - ³s±µ¨ìservice manager ibase_service_detach() - ©Mservice managerÂ_¶} ibase_set_event_handler() - µù¥U¤@Өƥ󪺦^½Õ¨ç¼Æ ibase_wait_event() - µ¥«Ý¼Æ¾Ú®w¨Æ¥ó iconv: iconv_mime_decode() - ¸Ñ½X¤@ÓMIMEÀY iconv_mime_decode_headers() - ¹ï¦hÓMIMEÀY¤@¦¸¸Ñ½X iconv_mime_encode() - §Î¦¨¤@ÓMIMEÀY iconv_strlen() - ªð¦^¦r²Å¦êªº¦r²Å¼Æ iconv_strpos() - ¬d§ä¦r²Å¦b¦ê¤¤²Ä¤@¦¸¥X²{ªº¦ì¸m iconv_strrpos() - ¬d§ä¦r²Å¦b¦ê¤¤³Ì«á¤@¦¸¥X²{ªº¦ì¸m iconv_substr() - ¨ú±o¦r²Å¦êªº¤@³¡¤À Streams: stream_copy_to_stream() - ¦bstream¶¡½Æ»s¼Æ¾Ú stream_get_line() - ¥Î«ü©w¤À¹j²Å±qstream¤¤¨ú±o¦æ stream_socket_accept() - ±µ¨ü¥Ñstream_socket_server() ³Ð«Øªºsocket³s±µ stream_socket_client() - ¥´¶} Internet ©ÎªÌ Unix domain socket³s±µ stream_socket_get_name() - ¨ú±o¥»¦a©ÎªÌ»·µ{ socketsªº¦W¦r stream_socket_recvfrom() - ±qsocket±µ¨ü¼Æ¾Ú¡AµL½×¬O§_³s±µ stream_socket_sendto() - µo°e«H®§µ¹¤@Ósocket¡AµL½×¬O§_³s±µ stream_socket_server() - ³Ð«Ø¤@ÓInternet©ÎªÌUnix domain socket Other: convert_uudecode() - ¸Ñ½X¤@Ó³q¹Luuencodeªº¦r²Å convert_uuencode() - ½s½X¤@Ó¦r²Å¬°uuencode curl_copy_handle() - ½Æ»s¤@ÓcURL¥y¬`¡A³s¦P¥¦ªº¥þ³¡°¾¦n¡]preferences¡^ dba_key_split() - ±N¤@ÓÁäÈ¡]key¡^±qstring§Î¦¡¤À³Î¬°¼Æ²Õ§Î¦¡ dbase_get_header_info() - ¨ú±o¤@ÓdBase¼Æ¾Ú®wªºÀY«H®§ dbx_fetch_row() - ±q¤@ÓDBX_RESULT_UNBUFFERED¼Ð»x¸m¦ìªºquery-result¨ú±orow fbsql_set_password() - §ïÅÜ«ü©w¥Î¤áªº±K½X file_put_contents() - ±N¤@Óstring¼g¤J¤@Ó¤å¥ó ftp_alloc() - ¬°±N³Q¤W¶Çªº¤å¥ó¤À°tªÅ¶¡ get_declared_interfaces() - ªð¦^¤@Ó¥]§t¤F©Ò¦³¤wÁn©úªº±µ¤fªº¼Æ²Õ get_headers() - ¨ú±oªA°È¾¹¹ï¤@ÓHTTP½Ð¨Dªð¦^ªº¥þ³¡ÀY¼Æ¾Ú headers_list() - ªð¦^µo°eªº¡]©ÎªÌ·Ç³Æµo°eªº¡^ÀY«H®§¦Cªí http_build_query() - ¥Í¦¨¤@ÓURL½s½Xªºquery¦ê idate() - ±N¥»¦a®É¶¡/¤é´Á®æ¦¡¤Æ¬°¾ã«¬ image_type_to_extension() - ¨ú±o¥Ñgetimagesize(), exif_read_data(), exif_thumbnail(), exif_imagetype() ¥Í¦¨ªº¹Ï¹³Ãþ«¬ªº¤å¥óÂX®i¦W imagefilter() - ¦Û©w¸q¹Ï¹³¹LÂo imap_getacl() - ¨ú±o«ü©wmailboxªºACL ldap_sasl_bind() - ¨Ï¥ÎSASL¸j©wLDAP¥Ø¿ý mb_list_encodings() - ªð¦^©Ò¦³¤ä«ùªº½s½X¦Cªí¼Æ²Õ pcntl_getpriority() - ¨ú±o¶iµ{ªºÄÝ©Ê pcntl_wait() - µ¥«Ý©Îªð¦^fork¤l¶iµ{ªº¥Ñwaitpid() ¨t²Î½Õ¥Î©w¸qªºª¬ºA pg_version() - ªð¦^¤@ӫȤáºÝ¡A¨óij©MªA°È¾¹ª©¥»ªº¼Æ²Õ php_check_syntax() - Àˬd«ü©w¤å¥óªº»yªk php_strip_whitespace() - ªð¦^¥h°£¤FµùÄÀ©MªÅ¥Õ®æªº·½¥N½X proc_nice() - §ïÅÜ·í«e¶iµ{ªºÄÝ©Ê pspell_config_data_dir() - §ó§ï»y¨¥¼Æ¾Ú¤å¥ó pspell_config_dict_dir() - §ó§ï¥D³æµü¦Cªí setrawcookie() - µo°e¤@Ó¤£±aURL½s½Xȱocookie snmp_read_mib() - Ū¨ú©M¸ÑªR¤@ÓMIB¤å¥ó¨ìMIB¾ð sqlite_fetch_column_types() - ªð¦^¤@Ó¥]§t¯S©wªíªº¦CÄݩʪº¼Æ²Õ str_split() - ±N¦r²ÅÂà¤Æ¬°¼Æ²Õ strpbrk() - ¬d§ä¤@Ӧꤤ¦r²Åªº¥ô¦ó¤l¶° substr_compare() - ¦r²Å¦ê¤ñ¸û¡A¤G¶i¨î¦w¥þ time_nanosleep() - ©µ¿ðN¯Ç¬í ¡@ ¡@ PHP5 ¹ï¹³Åé¨t * ¥»¤å¬O¹ï¡mClasses and Objects in PHP5¡n¨t¦C¤å³¹ªº¸É¥R©M×¥¿¡A¤¶²Ð¤FPHP5¹ï¹³Åé¨tªºÁ`Å鮨¬[¡A¦ý¦³¨Ç¯S©Ê¨S¦³¨ãÅ餶²Ð¡C±j¯P«ØÄ³¦bŪ¹L¡mClasses and Objects in PHP5¡n«á¾\Ū¥»¤å¡C
PHP5±À¥Xªº¹ï¶HÅé¨t¬Û«H¬O¤j®a³Ì¬°´Á«Ýªº¡CPHP5Éų¤FJava2ªº¹ï¶H¼Ò«¬¡A´£¨Ñ¤F¸û¬°±j¤jªº±¦V¹ï¹³½sµ{¤ä«ù¡A¨Ï¥ÎPHP¨Ó¹ê²{OO±NÅܱo»´ÃP©M¦ÛµM¡C
¹ï¹³¶Ç»¼
PHP5¨Ï¥Î¤FZend¤ÞÀºII¡A¹ï¹³³QÀx¦s©ó¿W¥ßªºµ²ºcObject Store¤¤¡A¦Ó¤£¹³¨ä¥¦¤@¯ëÅܶq¨º¼ËÀx¦s©óZval¤¤(¦bPHP4¤¤¹ï¹³©M¤@¯ëÅܶq¤@¼Ë¦sÀx©óZval)¡C¦bZval¤¤¶È¦sÀx¹ï¶Hªº«ü°w¦Ó¤£¬O¤º®e(value)¡C·í§Ú̽ƻs¤@ӹﹳ©ÎªÌ±N¤@ӹﹳ·í§@°Ñ¼Æ¶Ç»¼µ¹¤@Ó¨ç¼Æ®É¡A§Ṳ́£»Ýn½Æ»s¼Æ¾Ú¡C¶È¶È«O«ù¬Û¦Pªº¹ï¶H«ü°w¨Ã¥Ñ¥t¤@Ózval³qª¾²{¦b³oÓ¯S©wªº¹ï¶H«ü¦VªºObject Store¡C¥Ñ©ó¹ï¹³¥»¨¦ì©óObject Store,§Ú̹復©Ò§@ªº¥ô¦ó§ïÅܱN¼vÅT¨ì©Ò¦³«ù¦³¸Ó¹ï¹³«ü°wªºzvalµ²ºc----ªí²{¦bµ{§Ç¤¤´N¬O¥Ø¼Ð¹ï¶Hªº¥ô¦ó§ïÅܳ£·|¼vÅT¨ì·½¹ï¶H¡C.³o¨ÏPHP¹ï¹³¬Ý°_¨Ó´N¹³Á`¬O³q¹L¤Þ¥Î(reference)¨Ó¶Ç»¼¡A¦]¦¹PHP¤¤¹ï¹³Àq»{¬°³q¹L¡u¤Þ¥Î¡v¶Ç»¼¡A§A¤£¦A»Ýn¹³¦bPHP4¤¤¨º¼Ë¨Ï¥Î&¨ÓÁn©ú¡C
©U§£¦^¦¬¾÷¨î ¬Y¨Ç»y¨¥¡A³Ì¨å«¬ªº¦pC¡A»Ýn§AÅ㦡¦an¨D¤À°t¤º¦s·í§A³Ð«Ø¼Æ¾Úµ²ºc¡C¤@¥¹§A¤À°t¨ì¤º¦s¡A´N¥i¥H¦bÅܶq¤¤¦sÀx«H®§¡C¦P®É§A¤]»Ýn¦bµ²§ô¨Ï¥ÎÅܶq®ÉÄÀ©ñ¤º¦s¡A³o¨Ï¾÷¾¹¥i¥HªÅ¥X¤º¦sµ¹¨ä¥¦Åܶq¡AÁ×§K¯Ó¥ú¤º¦s¡C PHP¥i¥H¦Û°Ê¶i¦æ¤º¦sºÞ²z¡A²M°£¤£¦A»Ýnªº¹ï¶H¡CPHP¨Ï¥Î¤F¤Þ¥Îp¼Æ(reference counting)³oºØ³æ¯Âªº©U§£¦^¦¬(garbage collection)¾÷¨î¡C¨CÓ¹ï¶H³£¤º§t¤@Ó¤Þ¥Îp¼Æ¾¹¡A¨CÓreference³s±µ¨ì¹ï¶H¡Ap¼Æ¾¹¥[1¡C·íreferenceÂ÷¶}¥Í¦sªÅ¶¡©Î³Q³]¬°NULL¡Ap¼Æ¾¹´î1¡C·í¬YÓ¹ï¶Hªº¤Þ¥Îp¼Æ¾¹¬°¹s®É¡APHPª¾¹D§A±N¤£¦A»Ýn¨Ï¥Î³oÓ¹ï¶H¡AÄÀ©ñ¨ä©Ò¦ûªº¤º¦sªÅ¶¡¡C ¨Ò¦p¡G <?php $haohappy = new Person( ); unset($haohappy2); ?>
¥H¤W¬OPHP5¦b¤º¦sºÞ²z¤WªºÅܤơA¤]³\¤j®a¤£«ç»ò·P¿³½ì¡C¤U±§Ų́ӬݬÝPHP5¤¤ªº¹ï¶H¼Ò«¬©MPHP4¦³¤°»ò¨ãÅ骺¤£¦P¤§³B¡G
·s¼W¥\¯à §ï¶i¥\¯à
1) Private and Protected Members ¨p¦³©M«OÅ@Ãþ¦¨û¡]ÄݩʡA¤èªk¡^ 2) Abstract Classes and Methods ©â¹³Ãþ©M©â¹³¤èªk 3) Interfaces ¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@±µ¤f 4) Class Type Hints¡@ Ãþ«¬«ü¥Ü = 5) final¡@ finalÃöÁä¦r = 6) Objects Cloning¡@ ¹ï¹³½Æ»s = 7) Constructors and Destructors ºc³y¨ç¼Æ©MªRºc¨ç¼Æ 8) Class Constants Ãþ±`¶q = 9) Exceptions ²§±`³B²z 10) Static member ÀRºAÃþ¦¨û 11) __METHOD__ constant __METHOD__±`¶q = 12) Reflection ¤Ï®g¾÷¨î¡@
²Ä1¡B2¡B3¡B7¡B10½Ð¦Û¦æ¬d¾\¥»¤å¥½§Àªº¡mClasses and Objects in PHP5¡n¨t¦C¡A¨ä¤¤¤w¦³¸Ô²Ó¤¶²Ð¡A¥»¤å¤¤¤£¦AÁ¿¸Ñ¡C²Ä9ÂI²§±`³B²z©M²Ä12ÂI¤Ï®g¾÷¨î¤º®e¸û¬°Â×´I¡A©ó½g´T¥ç¤£¦b¤å¤¤¤¶²Ð¡A½ÐÃöª`§Y±N±À¥Xªº¡mPHP & More¡n¹q¤lÂø»x²Ä¤G´Á¡A·|±Mªù¼¶¤å¤¶²Ð¡C
¥H¤U¦V¤j®a¤¶²Ð²Ä4¡B5¡B6¡B8¡B11ÂI»y¨¥¯S©Ê¡G
Class Type Hints¡@Ãþ«¬«ü¥Ü
¤j®a³£ª¾¹D¡APHP¬O¤@ºØ®zÃþ«¬ªº»y¨¥¡C¦b¨Ï¥ÎÅܶq«e¤£»Ýn©w¸q¡A¤£»ÝnÁn©úÅܶqªº¼Æ¾ÚÃþ«¬¡C³o¦b½sµ{¤¤±a¨Ó«Ü¦h«K§Q¡A¦ý¤]±a¤F¤@¨ÇÁô±w¡A¯S§O·íÅܶqªºÃþ«¬ÅܤƮɡC¦bPHP5¼W¥[¤FÃþ«¬«ü¥Ü¡A¥i¥H¦b°õ¦æ¹Lµ{¤¤¦Û°Ê¹ïÃþ¤èªkªº°Ñ¼ÆÃþ«¬¶i¦æ§PÂ_¡C³oÃþ¦ü©óJava2¤¤ªºRTTI¡A°t¦Xreflection¥i¥HÅý§Ú̫ܦn¦a±±¨î¹ï¶H¡C
<?php interface Bar { class FooBar implements Foo, Bar { function b(Bar $bar) { $a = new FooBar; $a->a($b);
¦b±jÃþ«¬»y¨¥¤¤¡A©Ò¦³ÅܶqªºÃþ«¬±N¦b½sͮɶi¦æÀˬd¡A¦Ó¦bPHP¤¤¨Ï¥ÎÃþ«¬«ü¥Ü¨Ó¹ïÃþ«¬ªºÀˬd«hµo¥Í¦b¹B¦æ®É¡C¦pªGÃþ¤èªk°Ñ¼ÆªºÃþ«¬¤£¹ï¡A±N·|³ø¥XÃþ¦ü¡uFatal error: Argument 1 must implement interface Bar…¡v³o¼Ëªº¿ù»~«H®§¡C
¥H¤U¥N½X¡G <?php
¬Û·í©ó¡G <?php
final / finalÃöÁä¦r
PHP5¤¤·s¼W¥[¤FfinalÃöÁä¦r¡A¥¦¥i¥H¥[¦bÃþ©ÎÃþ¤èªk«e¡C¼ÐÃѬ°finalªºÃþ¤èªk¡A¦b¤lÃþ¤¤¤£¯à³QÂмg¡C¼ÐÃѬ°finalªºÃþ¡A¤£¯à³QÄ~©Ó¡A¦Ó¥B¨ä¤¤ªº¤èªk³£Àq»{¬°finalÃþ«¬¡C Final¤èªk¡G <?php
FinalÃþ¡G <?php // ¤U±³o¤@¦æ¬O¿ù»~ªº
Objects Cloning / ¹ï¹³½Æ»s «e±¦b¤º¦sºÞ²z³¡¥÷»¡¹L¡APHP5¤¤Àq»{³q¹L¤Þ¥Î¶Ç»¼¹ï¶H¡C¹³¨Ï¥Î$object2=$object1³o¼Ëªº¤èªk½Æ»s¥Xªº¹ï¶H¬O¬Û¤¬ÃöÁpªº¡C¦pªG§Ú̽T¹ê»Ýn½Æ»s¥X¤@ÓÈ»Pì¨Ó¬Û¦Pªº¹ï¶H¦Ó§Æ±æ¥Ø¼Ð¹ï¶H»P·½¹ï¹³¨S¦³ÃöÁp¡]¹³´¶³qÅܶq¨º¼Ë³q¹LȨӶǻ¼¡^¡A¨º»ò´N»Ýn¨Ï¥ÎcloneÃöÁä¦r¡C¦pªGÁ٧Ʊæ¦b½Æ»sªº¦P®ÉÅܰʷ½¹ï¹³¤¤ªº¬Y¨Ç³¡¥÷¡A¥i¥H¦bÃþ¤¤©w¤@Ó__clone()¨ç¼Æ¡A¥[¤J¾Þ§@¡C
<?php function MyCloneable() {
$obj = new MyCloneable(); $obj->name = "Hello"; print $obj->id . "\n"; $obj_cloned = clone $obj; print $obj_cloned->id . "\n";
¥H¤W¥N½X½Æ»s¥X¤@Ó§¹¥þ¬Û¦Pªº¹ï¶H¡C
µM«á½Ð§âfunction __clone()³o¤@Ó¨ç¼ÆªºµùÄÀ¥h±¼¡A«·s¹B¦æµ{§Ç¡C«h·|½Æ»s¥X¤@Ó°ò¥»¬Û¦P¡A¦ý³¡¥÷ÄÝ©ÊÅܰʪº¹ï¶H¡C
Class Constants / Ãþ±`¶q PHP5¤¤¥i¥H¨Ï¥ÎconstÃöÁä¦r¨Ó©w¸qÃþ±`¶q¡C
<?php echo "Foo::constant = " . Foo::constant . "\n";
__METHOD__ constant __METHOD__±`¶q __METHOD__ ¬OPHP5¤¤·s¼Wªº¡uÅ]³N¡v±`¶q¡Aªí¥ÜÃþ¤èªkªº¦WºÙ¡C <?php class Bar extends Foo { Foo::show(); // outputs Foo::show function test() { test(); // outputs test ¡@ ¡@ PHP5 ªºXML·s¯S©Ê ¦´ÁªºPHPª©¥»´N¤w¸g¶}©l¤ä«ùXML¤F¡A¦Ó³o¥u¬O¤@Ó°ò©óSAXªº±µ¤f¡A¥¦¥i¥H»´ÃPªº¸ÑªR¥ô¦óXML¤åÀÉ¡CÀHµÛPHP4¤¤¥[¤J¤FDOMXMLÂX®i¼Ò¶ô¡AXML³Q§ó¦nªº¤ä«ù¤F¡C«á¨ÓXSLT°µ¬°¸É¥R³Q¥[¤F¶i¨Ó¡C¦b¾ãÓPHP4ªº¶¥¬q¡A¨ä¥¦¤@¨Ç¥\¯à¦pHTML¡AXSLT©MDTDÅçÃÒ¤]³Q¥[¨ì¤FDOMXMLÂX®i¤¤¡A¤£©¯ªº¬O¡A¥Ñ©óXSLT©MDOMXMLÂX®i©l²×³B©ó¹êÅç¶¥¬q¡AAPI³¡¤À¤]³Q¤£¤î¤@¦¸ªº×§ï¡A¥¦ÌÁÙ¬O¤£¯à¥HÀq»{¤è¦¡¦w¸Ë¡C¦¹¥~¡ADOMXMLÂX®i¨S¦³¿í´`W3C¨î©wªºDOM¼Ð·Ç¡A¦Ó¦³¦Û¤vªº©R¦W¤èªk¡CÁöµM¦bPHP4.3¤¤³o³¡¤À±o¨ì¤F§ïµ½¨Ã¥B³\¦h¤º¦s¬ªº|©M¨ä¥¦¤@¨Ç¥\¯à¤]±o¥H×´_¡A¦ý¥¦©l²×¨S¦³µo®i¨ì¤@Óéwªº¶¥¬q¡A¤@¨Ç²`¤Jªº°ÝÃD¤w¸g´X¥G¤£¥i¯à×´_¡C¥u¦³SAXÂX®i³Q¤wÀq»{¤è¦¡¦w¸Ë¡A¨ä¥¦ªº¤@¨ÇÂX®i±q¥¼±o¨ì¼sªxªº¨Ï¥Î¡C °ò©ó©Ò¦³³o¨Çì¦]¡APHPªºXML¶}µoªÌ¨M©w¦bPHP5«¼g¥þ³¡¥N½X¡A¨Ã¿í´`¨Ï¥Î¼Ð·Ç¡C
°£¤FÄ~©ÓPHP4¤¤»D¦WªºSAX¸ÑªR¾¹¤§¥~¡APHP5ÁÙ¤ä«ù¿í´`W3C¼Ð·ÇªºDOM©M°ò©óLIBXSLT¤ÞÀºªºXSLT¡C¦P®ÉÁÙ¥[¤J¤FPHP¿W¦³ªºSimpleXMLÂX®i©M²Å¦X¼Ð·ÇªºSOAPÂX®i¡CÀHµÛXML¶V¨Ó¶V³Q«µø¡APHP¶}µoªÌ¨M©w¦bÀq»{¦w¸Ë¤è¦¡¤¤¥[¤J§ó¦h¹ïXMLªº¤ä«ù¡C³o´N·N¨ýµÛ§A²{¦b¥i¥H¨Ï¥ÎSAX¡ADOM©MSimpleXML¡A¦Ó³o¨ÇÂX®i±N·|¦b§ó¦hªºªA°È¾¹¤W¦w¸Ë¡CµM«á¹ï©óXSLT©MSOAPªº¤ä«ù¡AÁÙ»Ýn¦bPHP½sͮɳQÅ㦡ªº°t¸m¡C
²{¦b©Ò¦³ªºXMLÂX®i³£¤ä«ùPHP¼Æ¾Ú¬y¡A§Y¨Ï§A¤£±qPHP¤¤ª½±µ³X°Ý¡C¨Ò¦p¡A¦bPHP5¤¤§A¥i¥H±q¤@Ó¤å¥ó©Î±q¤@±ø«ü¥O³X°Ý¼Æ¾Ú¬y¡C°ò¥»¤W§A¯à°÷¦b¥ô¦ó¥i¥H³X°Ý´¶³q¤å¥óªº¦a¤è³X°ÝPHP¼Æ¾Ú¬y¡C PHP4.3¤¤Â²nªº¤¶²Ð¤F¼Æ¾Ú¬y¡A¦bPHP5¤¤¤w¸g±o¨ì¤F¶i¤@¨Bªº´£°ª¡A¥]§t¤å¥ó¦s¨ú¡Aºôµ¸¦s¨ú©M¨ä¥¦¾Þ§@¡A¦p¦@¨É¤@®M¥\¯à¨ç¼Æ¡C§A¬Æ¦Ü¥i¥H¨Ï¥ÎPHP¥N½X¨Ó¹ê²{§A¦Û¤vªº¼Æ¾Ú¬y¡A³o¼Ë¼Æ¾Ú¦s¨ú±NÅܱo«D±`²³æ¡CÃö©ó³o³¡¤Àªº§ó¦h²Ó¸`½Ð°Ñ¦ÒPHP¤åÀÉ¡C
SAXªº¥þºÙ¬OSimple API for XML¡A¥¦¬O¥Î©ó¸ÑªRXML¤åÀɪº±µ¤f¡A¬O°ò©ó¦^½Õ§Î¦¡ªº¡C±qPHP3¶}©l´N¤w¸g¤ä«ù¤FSAX¡A¨ì²{¦b¤]¨S¦³¤Ó¤jªºÅܤơC¦bPHP5¤¤¡AAPI±µ¤f¨Ã¨S¦³§ïÅÜ¡A©Ò¥H§Aªº¥N½X¤´µM¥i¥H¹B¦æ¡C°ß¤@¤£¦Pªº¬O¥¦¤£¦A°ò©óEXPAT®w¡A¦Ó¬O°ò©óLIBXML2®w¡C ³oÓÅܤƱa¨Ó¤F¤@¨Ç¹ï©R¦WªÅ¶¡¤ä«ù¤Wªº°ÝÃD¡A³oÓ°ÝÃD¦bLIBXML2.2.6ª©¥»¤¤¤w¸g±o¨ì¸Ñ¨M¡C¦ý¬OLIBXML2¥H«eªºª©¥»¤¤¨Ã¨S¦³¸Ñ¨M¡A¦]¦¹¦pªG§A¨Ï¥Î¤Fxml_parse_create_ns()¡F±j¯P«ØÄ³¦b§Aªº¨t²Î¤W¦w¸ËLIBXML2.2.6¡C
DOM (¤åÀɹﹳ¼Ò«¬)¬O¥ÑW3C¨î©wªº¤@®M³X°ÝXML¤åÀɾ𪺼зǡC¦bPHP4¥i¥H¨Ï¥ÎDOMXML¨Ó¹ï¦¹¶i¦æ¾Þ§@¡ADOMXMLªº³Ì¥Dn°ÝÃD¬O¥¦¤£²Å¦X¼Ð·Çªº©R¦W¤èªk¡C¦Ó¥B¦b«Üªø¤@¬q®É¶¡¤ºÁÙ¦s¦b¤º¦s¬ªº|°ÝÃD¡]PHP4.3¤w¸g×´_¤F³oÓ°ÝÃD¡^¡C ·sªºDOMÂX®i¬O°ò©óW3C¼Ð·Ç§¹¦¨ªº¡A¥]§t¤èªk©MÄݩʦWºÙ¡C¦pªG§A¦b¨ä¥¦»y¨¥¤¤¼ô±xDOM¡A¨Ò¦p¦bJavaScript¤¤¡A¨º»ò¦bPHP¤¤½s¼gÃþ¦üªº¥\¯à±NÅܱo«D±`®e©ö¡C§A¤£¥²¨C¦¸³£¬d¬Ý¤åÀÉ¡A¦]¬°¤èªk©M°Ñ¼Æ³£¬O¬Û¦Pªº¡C ¥Ñ©ó¨Ï¥Î¤F·sªºW3C¼Ð·Ç¡A°ò©óDOMXMLªº¥N½X±N¤£¯à¹B¦æ¡C¦bPHP¤¤ªºAPI¦³«Ü¤jªº¤£¦P¡C¦ý¬O¦pªG§Aªº¥N½X¤¤¨Ï¥Î¤FÃþ¦üW3C¼Ð·Çªº¤èªk©R¦W¤è¦¡¡A²¾´Ó¨Ã¤£¬O«Ü§xÃø¡C§A¥u»Ýn±N¸ü¤J¨ç¼Æ©M«O¦s¨ç¼Æ×§ï¡A§R°£¨ç¼Æ¦W¤¤ªº¤U¹º½u¡]DOM¼Ð·Ç¨Ï¥Îº¦r¥À¤j¼g¡^¡C¨ä¥¦¦U³Bªº½Õ¸`·íµM¤]¬O¥²¶·ªº¡A¦ý¬O¥DnÅ޿賡¤À¥i¥H«O«ù¤£ÅÜ¡C
§Ú¤£·|¦b³o½g¤å³¹¤¤¸ÑÄÀDOMÂX®iªº©Ò¦³¯S©Ê¡A¨º¤]¬O¨S¦³¥²nªº¡C©Î³\§AÀ³¸Ó±NHTTP://www.w3.org/DOMªº¤åÀÉ¥[¤J®ÑÅÒ¡C¥¦»PPHP5ªºDOM³¡¤À°ò¥»¤W¬Û¦P¡C ¦b³o½g¤å³¹ªº¤j¦h¼Æ¨Ò¤l¤¤§Ú̱N¨Ï¥Î¦P¤@ÓXML¤å¥ó¡Azend.com¤W¦³«D±`²³æªºRSSª©¥»¡C±N¤U±ªº¤å¥»Öß¶K¨ì¤@Ӥ奻¤å¥ó¤¤¨Ã«O¦s¬°articles.xml¡C
n±N³oÓ¨Ò¤l¸ü¤J¨ì¤@ÓDOM¹ï¶H¡Aº¥ýn³Ð«Ø¤@ÓDOMDocument¹ï¶H¡AµM«á¸ü¤JXML¤å¥ó¡C $dom = new DomDocument(); ¥¿¹³¤W±©Ò´£¤Îªº¡A§A¥i¥H¨Ï¥ÎPHPªº¼Æ¾Ú¬y¨Ó¸ü¤J¤@ÓXML¤åÀÉ¡A§AÀ³¸Ó³o¼Ë¼g¡G $dom->load("file:///articles.xml"); ¡]©ÎªÌ¨ä¥¦Ãþ«¬ªº¼Æ¾Ú¬y¡^ ¦pªG§A·Q±NXML¤åÀÉ¿é¥X¨ìÂsÄý¾¹©Î°µ¬°¼Ð·Ç¼Ð¥X¡A¨Ï¥Î¡G print $dom->saveXML(); ¦pªG§A·Q§â¥¦«O¦s¦¨¤å¥ó¡A½Ð¨Ï¥Î¡G print $dom->save("newfile.xml"); ¡]ª`·N³o¼Ë°µ·|±N¤å¥ó¤j¤pµo°e¨ìstdout¡^ ·íµM³oÓ¨Ò¤l¨S¦³¤Ó¦hªº¥\¯à¡AÅý§Ų́Ӱµ¨Ç§ó¦³¥Îªº¡C§Ų́Өú±o©Ò¦³ªºtitle¤¸¯À¡C¦³«Ü¦h¤èªk¥i¥H¿ì¨ì¡A³Ì²³æªº´N¬O¨Ï¥ÎgetElementsByTagName($tagname): $titles = $dom->getElementsByTagName("title"); textContentÄݩʨ䣬OW3C¼Ð·Ç¡A¥¦¥i¥HÅý§Ú̫ܤè«Kªº§Ö³tŪ¨ú¤@Ó¤¸¯Àªº©Ò¦³¤å¥»¸`ÂI¡A¨Ï¥ÎW3Cªº¼Ð·ÇŪ¨ú¬O¤U±³o¼Ë¡G $node->firstChild->data; ¡]³o®ÉÔ§An½T«OfirstChildµ²ÂI¬O§A»Ýnªº¤å¥»µ²ÂI¡A§_«h§AÁÙ±o¹M¾ú©Ò¦³¤lµ²ÂI¨Ó¬d§ä¡^¡C ¥t¥~¤@Ónª`·Nªº°ÝÃD¬OgetElementsByTagName()ªð¦^¤@ÓDomNodeList,¹ï¶H¡A¦Ó¤£¬O¹³PHP4¤¤get_elements_by_tagname()¨º¼Ëªð¦^¤@ӼƲաA¦ý¬O¥¿¹³§A¦b³oÓ¨Ò¤l¤¤¬Ý¨ìªº¨º¼Ë¡A§A¥i¥H¨Ï¥Îforeach»y¥y»´ÃPªº¹M¾ú¥¦¡C§A¤]¥i¥Hª½±µ¨Ï¥Î$titles->item(0)¨Ó³X°Ýµ²ÂI¡C¸Ó¤èªk±Nªð¦^²Ä¤@Ótitle¤¸¯À¡C ¥t¤@Ó¨ú±o©Ò¦³title¤¸¯Àªº¿ìªk¬O±q®Úµ²ÂI¹M¾ú¡A§A¥i¥H¬Ý¨ì¡A³oÓ¤èªk§ó½ÆÂø¡A¦ý¬O¦pªG§A»Ýnªº¤£¥u¬Otitle¤¸¯Àªº®ÉÔ¡A³oÓ¤èªk¤]´N§óÆF¬¡¡C foreach ($dom->documentElement->childNodes as $articles) { XPath XPaht ´N¹³¬OXMLªºSQL¡A¨Ï¥ÎXPath§A¥i¥H¦b¤@ÓXML¤åÀɤ¤¬d¸ß²Å¦X¤@¨Ç¼Ò¦¡»yªkªº¯S©wµ²ÂI¡C·Q¨Ï¥ÎXPathÀò±o©Ò¦³titleµ²ÂI¡A¥u»Ýn³o»ò°µ¡G <? ³o¼Ë©M¨Ï¥ÎgetElementsByTagName()¤èªk®t¤£¦h¡A¦ý¬OXpathn±j¤jªº¦h¡A¨Ò¦p¡A¦pªG§Ú̦³¤@Ótitle¤¸¯À¬Oarticleªº¤l¤¸¯À(¦Ó¤£¬Oitemªº¤l¤¸¯À)¡AgetElementsByTagName()´N·|±N¥¦ªð¦^¡C¦Ó¨Ï¥Î/articles/item/title»yªk¡A§ÚÌ¥u·|±o¨ì¦b«ü©w²`«×©M¦ì¸mªºtitle¤¸¯À¡C³o¥u¬O¤@Ó²³æªº¨Ò¤l¡A¦A²`¤J¤@ÂI¥i¯à¬O³o¼Ë¡G /articles/item[position() = 1]/title ªð¦^²Ä¤@Óitem¤¸¯Àªº©Ò¦³ /articles/item/title[@id = '23'] ªð¦^©Ò¦³§t¦³idÄݩʨåBȬ°23ªºtitle /articles//title ªð¦^©Ò¦³articles¤¸¯À¤U±ªºtitle(ĶªÌµù¡G//¥Nªí¥ô·N²`«×) §A¤]¥i¥H¬d¸ß§t¦³¯S®í¥S§Ì¤¸¯ÀªºÂI¡A§t¦³¯S®í¤å¥»¤º®eªº¤¸¯À¡A©ÎªÌ¨Ï¥Î©R¦WªÅ¶¡µ¥µ¥¡C¦pªG§A¥²¶·¤j¶qªº¬d¸ßXML¤åÀÉ¡A¾A·íªº¾Ç²ß¨Ï¥ÎXPath·|¸`¬Ù§A«Ü¦h®É¶¡¡A¥¦¨Ï¥Î²³æ¡A°õ¦æ³t«×§Ö¡A¤ñ¼Ð·ÇªºDOM»Ýn§ó¤Öªº¥N½X¡C
¤åÀɹﹳ¼Ò«¬¨Ã¤£¬O¥u¯àŪ¨ú©M¬d¸ß¡A§A¤]¥i¥H¾Þ§@©M¼g¤J¡C(DOM¼Ð·Ç¦³ÂI¤¾ªø¡A¦]¬°½s¼gªÌ·QºÉ¶q¤ä«ù¯à°÷·Q¹³¨ìªº¨C¤@ÓÀô¹Ò¡A¦ý¬O¥¦¤u§@ªº«D±`¦n)¡C¬Ý¬Ý¤U±³oÓ¨Ò¤l¡A¥¦¦b§Ú̪ºarticle.xml¤å¥ó¤¤²K¥[¤F¤@Ó·s¤¸¯À¡C $item = $dom->createElement("item"); º¥ý¡A§Ú̳ЫؤF©Ò¦³»Ýnªºµ²ÂI¡A¤@Óitem¤¸¯À¡A¤@Ótitle¤¸¯À©M¤@Ó¥]§titem¼ÐÃDªº¤å¥»µ²ÂI¡AµM«á§Ú̱N©Ò¦³ªºµ²ÂIÃì±µ°_¨Ó¡A§â¤å¥»µ²ÂI¥[¨ìtitle¤¸¯À¤W,§âtitle¤¸¯À¥[¨ìitem¤¸¯À¤W¡A³Ì«á§Ú̧âitem¤¸¯À´¡¤J¨ìarticles®Ú¤¸¯À¤W¡C²{¦b¡A§Ú̪ºXML¤åÀɤ¤¦³¤@Ó·sªº¤å³¹¦Cªí¤F¡C ÂX®iÃþ(class) class Articles extends DomDocument { HTML ·í§A»Ýn³X°Ý¤@Ó§AµLªk±±¨î¯¸ÂIªº¤º®e®É¡AHTMLªº©Ê¯à´NÅã¥Ü¤Q¤À¦³¥Î¤F¡C¦b XPath, XSLT ©Î SimpleXMLªºÀ°§U¤U¡A§A¬Ù±¼¤F³\¦h¥N½X¡A¹³¨Ï¥Î¥¿«hªí¹F¦¡¤ñ¸û¦r²Å¦ê©ÎªÌSAX¸ÑªR¾¹¡C·íHTML¤åÀɵ²ºc¤£¬O«Ü¦nªº®ÉÔ¡A³oÓ¿ìªk¤×¨ä¦³¥Î(³o¬OÓÀWÁcªº°ÝÃD¡I)¡C ¤U±ªº¥N½XÀò±o¨Ã¸ÑªRphp.netªºº¶¡A±Nªð²Ä¤@Ótitle¤¸¯Àªº¤º®e¡C $dom = new DomDocument(); ½Ðª`·N·í«ü©w¤¸¯À¨S¦³§ä¨ì®É¡A§Aªº¿é¥X¥i¯à·|¥]§t¿ù»~¡C¦pªG§Aªººô¯¸ÁÙ¦b¨Ï¥ÎPHP¿é¥XHTML4¥N½X¡A¦³¤@Ó¦n®ø®§n§i¶D§A¡ADOMÂX®i¤£¶È¯à¸ü¤JHTML¤åÀÉ¡A¦Ó¥BÁÙ¯à±N¥LÌ«O¦s¬°HTML4®æ¦¡ªº¤å¥ó¡C¦b§A²K¥[§¹DOM¤åÀÉ«á¡A¨Ï¥Î$dom->saveHTML()¨Ó«O¦s¡Cnª`·Nªº¬O¡A¬°¤F¨Ï¿é¥XªºHTML¥N½X²Å¦XW3C¼Ð·Ç¡A³Ì¦n¤£¥Î¨Ï¥Î ¾ã»ôªºÂX®i?(tidy extension)¡CLibxml2 ®w¤ä«ùªºHTML¨Ã¤£·|¦Ò¼{¨ì¨CÓ¥i¯àµo¥Íªº¨Æ±¡¡A¤]¤£¯à«Ü¦nªº³B²z«D³q¥Î®æ¦¡ªº¿é¤J¡C ÅçÃÒ DTD¬O¤@Ó²£¥Í©óSGML®É¥Nªº¼Ð·Ç¡A¯Ê¤Ö¤@¨ÇXMLªº·s¯S©Ê¡]¦p©R¦WªÅ¶¡¡^,¦Ó¥B¥Ñ©ó¥¦¤£¬O¥ÎXML¼gªº¡A¥¦¤]«ÜÃø³Q¸ÑªR©MÂà´«¡C ÅçÃÒXML¤åÀɪº»yªk¬Û·í²³æ¡G $dom->validate('articles.dtd');
$sxe = simplexml_load_file("articles.xml"); ³o¬O¦b·F¤°»ò¡Hº¥ý±Narticles.xml¸ü¤J¨ì¤@ÓSimpleXML¹ï¶H¡CµM«á¨ú±o©Ò¦³$sxe¤¤ªºitem¤¸¯À¡A³Ì«á$item->titleªð¦^title¤¸¯Àªº¤º®e¡A´N¬O³o¼Ë¡C§A¤]¥i¥H¨Ï¥ÎÃöÁp¼Æ²Õ¬d¸ßÄݩʡA¨Ï¥Î: $item->title['id']¡C ¬Ý¨ì¤F§a¡A³o«á±¯u¬O¤Ó¯«©_¤F¡A¦³³\¦h¤£¦Pªº¿ìªk¥i¥H±o¨ì§ÚÌ·Qnªºµ²ªG¡A¨Ò¦p, $item->title[0]ªð¦^©M¨Ò¤l¤¤¬Û¦Pªºµ²ªG¡A¥t¤@¤è±¡Aforeach($sxe->item->title as $item)¥uªð¦^²Ä¤@Ótitle,¨Ã¤£¬O©Ò¦³¦b¤åÀɤ¤ªºtitle¤¸¯À¡C¡]´N¹³§Ú¦bXPath¤¤¹w´Áªº¨º¼Ë¡^¡C SimpleXML ¹ê»Ú¤W¬O¨Ï¥Î¤FZend¤ÞÀº2·s¯S©Êªº²Ä¤@ÓÂX®i¡C¦]¦¹¤]¦¨¤F³o¨Ç·s¯S©Êªº´ú¸ÕÂI¡A§Anª¾¹D¦b¶}µo¶¥¬qbugs©M¤£¥i¹w®Æªº¿ù»~¥i¤£¬O¤Ö¼Æ¡C °£¤F¤W±¨Ò¤l¤¤©Ò¨Ï¥Îªº¹M¾ú©Ò¦³¸`ÂIªº¤èªk¡A¦bSimpleXML¤¤¤]¦³¤@ÓXPath±µ¤f¡A¥¦¬°³X°Ý³æÓµ²ÂI´£¨Ñ¤F§ó²³æªº¿ìªk¡C foreach($sxe->xpath('/articles/item/title') as $item) { ¤£¥i§_»{¡A³o¬q¥N½X¤]¤£¤ñ«e±¨Ò¤l¤¤ªºµu¡A¦ý¬O´£¨Ñ¤F§ó½ÆÂø©Î§ó²`ªº´O®MXML¤åÀÉ¡A§A·|µo²{©MSimpleXML¤@°_¨Ï¥ÎXPath·|¸`¬Ù§A«Ü¦hªº¿é¤J¡C ¦V SimpleXML ¤åÀɼg¤J¼Æ¾Ú $sxe->item->title = "XML in PHP5 "; //title¤¸¯Àªº·s¤º®e¡C ¤¬¥Î¨ó§@©Ê $sxe = simplexml_import_dom($dom); ²z½×¤W±NSablotron¸j©w¨ìPHP5¤W¤]¬O¥i¯àªº¡A¦ý¬O¤£©¯ªº¬O¨S¤H¨Ó°µ¡C¦]¦¹¡A¦pªG§A¥¿¦b¨Ï¥ÎSablotron¡A§A¤£±o¤£¦bPHP5¤¤¤Á´«¨ìlibxslt³B²z¾¹¡CLibxslt ¬O±a¦³JavaScript²§±`³B²z¤ä«ùªºSablotron¡A¬Æ¦Ü¥i¥H¨Ï¥ÎPHP±j¤jªº¼Æ¾Ú¬y¨Ó«·s¹ê²{Sablotron¿W¦³ªºp¹º³B²z¡]scheme handlers¡^¡C¦¹¥~¡Alibxslt ¬O ³Ì§ÖªºXSLT³B²z¾¹¤§¤@¡A©Ò¥H§AÁÙ§K¶O±o¨ì¤F³t«×ªº´£¤É¡C¡]°õ¦æ³t«×¬OSablotronªº¤G¿¡^¡C ©M¥»¤å°Q½×ªº¨ä¥¦ÂX®i¤@¼Ë¡A§A¥i¥H¦bXSLÂX®i¡ADOMÂX®i©Mvice versa¤§¶¡¥æ´«XML¤åÀÉ¡A¹ê»Ú¤W¡A§A¥²¶·±o³o»ò°µ¡A¦]¬°EXT/XSLÂX®i¨Ã¨S¦³¸ü¤J©M«O¦sXML¤åÀɪº±µ¤f¡A¥u¯à¨Ï¥ÎDOMÂX®i¡C¤@¶}©l¾Ç²ßXSLTÂà´«¡A§A¤£»Ýn´x´¤¤Ó¦hªº¤º®e¡A³o¸Ì¤]¤£¦s¦bW3C¼Ð·Ç¡A¦]¬°³oÓAPI¤¤±qMozilla¡uÉ¡v¹L¨Óªº¡C º¥ý§A»Ýn¤@ÓXSLT¼Ë¦¡ªí¡A±N¤U¦C¤å¥»Öß¶K¨ì¤@Ó·s¤å¥ó¨Ã¥B«O¦s¦Çarticls.xsl
µM«á¥ÎPHP¸}¥»½Õ¥Î¥¦¡G:
/* ±NXML©MXSL¤åÀɸü¤J¨ìDOMDocument¹ï¹³*/ /* ³Ð«ØXSLT³B²z¾¹¡A¨Ã¾É¤J¼Ë¦¡ªí*/ /* Âà´«¨Ã¿é¥XXML¤åÀÉ */ ?> ¤W±ªº¨Ò¤lº¥ý¨Ï¥ÎDOMªº¤èªkload()¸ü¤JXSLT¼Ë¦¡ªíarticles.xsl¡AµM«á³Ð«Ø¤F¤@Ó·sªºXsltProcessor¹ï¶H¡A¸Ó¹ï¹³¾É¨ì¤F«á±n¨Ï¥Î¤FXSLT¼Ë¦¡ªí¹ï¶H¡A°Ñ¼Æ¥i¥H³o¼Ë³]¸msetParameter(namespaceURI, name, value),³Ì«áXsltProcessor¹ï¹³¨Ï¥ÎtransformToDoc($inputdom)¶}©lÂà´«¨Ãªð¦^¤@Ó·sªºDOMDocument¹ï¶H¡C . ³oÓAPIªºÀuÂI¦b©ó§A¥i¥H¨Ï¥Î¦P¤@Ӽ˦¡ªíÂà´«³\¦hXML¤åÀÉ¡A¥u»Ýn±N¥¦¸ü¤J¤@¦¸µM«á«½Æ¨Ï¥Î¥¦¡A¦]¬°transormToDoc()¨ç¼Æ¥i¥HÀ³¥Î©ó¤£¦PªºXML¤åÀÉ¡C °£¤FtransormToDoc()¡AÁÙ¦³¤GӥΩóÂà´«ªº¤èªk:transformToXML($dom)ªð¦^¤@Ó¦r²Å¦ê¡AtransformToURI($dom, $uri)±NÂà´«¤§«áªº¤åÀÉ«O¦s¨ì¤å¥ó©Î¤@ÓPHP¼Æ¾Ú¬y¡Cª`·N¦pªG§A·Q¨Ï¥ÎXSLTªº¤@Ó»yªk¦p ©Î indent="yes",§A¤£¯à¨Ï¥ÎtransformToDoc()¡A¦]¬°DOMDocument¹ï¹³ ¤£¯à«O¦s¸Ó«H®§¡A¥u¯à·í§A±NÂà´««áªºµ²ªGª½±µ«O¦s¨ì¦r²Å¦ê©Î¤å¥ó¤¤®É¤~¯à³o¼Ë°µ¡C ½Õ¥ÎPHP¨ç¼Æ
function dateLang () { $xsl = new DomDocument(); $proc = new XsltProcessor(); // ¸ü¤J¤åÀɨèϥÎ$xsl¨Ó³B²z /* Âà´«¨Ã¿é¥XXML¤åÀÉ */ print $newdom->saveXML(); ?> ¤U±¬OXSLT¼Ë¦¡ªídatetime.xsl¡A¥¦·|½Õ¥Î³oÓ¨ç¼Æ¡C
¤U±¬On¨Ï¥Î¼Ë¦¡ªíÂà´«ªºXML¤åÀÉ¡Atoday.xml(¦P²z¡Aarticles.xml¤]·|±o¨ì¦P¼Ëµ²ªG)¡C
¤W±ªº¼Ë¦¡ªí¡APHP¸}¥»©M©Ò¦³ªºXML¤å¥ó·|¥Î·í«e¨t²Î³]¸mªº»y¨¥¿é¥X¬P´Áªº¦W¦r¡C§A¥i¥Hµ¹php:function()²K¥[§ó¦hªº°Ñ¼Æ¡A²K¥[ªº°Ñ¼Æ·|³Q¶Ç»¼µ¹PHP¨ç¼Æ¡C³o¸Ì¦³¤@Ó¨ç¼Æphp:functionString(),³oÓ¨ç¼Æ¦Û°Ê±N©Ò¦³¿é¤Jªº°Ñ¼ÆÂà´«¬°¦r²Å¦ê¡A©Ò¥H§A¤£»Ýn¦bPHP¸Ì¶i¦æÂà´«¡C ª`·N§A»Ýn¦bÂà´«¤§«e½Õ¥Î$xslt->registerPhpFunctions()¡A§_«hPHP¨ç¼Æ½Õ¥Î±N¦]¬°¦w¥þì¦]¤£·|³Q°õ¦æ¡]§A©l²×¬Û«H§AªºXSLT¼Ë¦¡ªí¶Ü¡H¡^¡C¥Ø«e³X°Ý¨t²ÎÁÙ¨S¦³¹ê²{¡A¤]³\¦b±N¨ÓPHP5ªºª©¥»¤¤·|¹ê²{³oÓ¥\¯à¡C ºKn ·PÁÂlibxml2—PHP5 XMLÂX®i©Ò¨Ï¥Îªº©³¼h®w¡A¨Ï¥ÎDTD¡ARelaxNG©ÎXML SchemaÅçÃÒXML¤åÀɲ{¦b¤w¸g³Q¤ä«ù¤F¡C XSL¤ä«ù¤]±o¨ì¤F½·s¡A²{¦b¨Ï¥ÎLibxslt®w¡A¤ñì¨ÓªºSablotron®w¦b©Ê¯à¤W¦³«Ü¤j´£°ª¡A¦Ó¥B¡A¦bXSLT¼Ë¦¡ªí¤º³¡½Õ¥ÎPHP¨ç¼Æ¥i¥HÅý§A¼g¥X§ó±j¤jªºXSLT¥N½X¡C ¦pªG§A¤w¸g¦bPHP4©Î¨ä¥¦»y¨¥¤¤¨Ï¥Î¤FXML¡A§A·|³ßÅwPHP5ªºXML¯S©Êªº¡AXML¦bPHP5¤¤¦³¤F«Ü¤jªºÅܤơA²Å¦X¼Ð·Ç¡A©M¨ä¥¦¤u¨ã¡A»y¨¥¬O¦Pµ¥ªº¡C |
|