»¶ÓÄú·ÃÎÊÎÒ°®IT¼¼ÊõÍø£¬½ñÌìС±àΪÄã·ÖÏíµÄ±à³Ì¼¼ÊõÊÇ£º¡¾¡¶PHPÉè¼ÆÄ£Ê½½éÉÜ¡·µÚÊ®ÎåÕ ±íÊý¾ÝÍø¹ØÄ£Ê½¡¿£¬ÏÂÃæÊÇÏêϸµÄ·ÖÏí£¡
¡¶PHPÉè¼ÆÄ£Ê½½éÉÜ¡·µÚÊ®ÎåÕ ±íÊý¾ÝÍø¹ØÄ£Ê½
ǰһÕÂÖÐʹÓö¯Ì¬¼Ç¼ģʽ¶ÔÊý¾Ý¿â±í½øÐн¨Á¢£¬»ñÈ¡£¬¸üУ¨Í¨¹ýÀ©Õ¹ÊµÏÖɾ³ý£©Ã¿Ò»ÐеIJÙ×÷¡£¶¯Ì¬¼Ç¼ģʽÊÇÒ»ÖÖ¼òµ¥µÄ³éÏóÊý¾Ý¿âÁ¬½ÓµÄ·½Ê½£¬µ«ÊÇÕâÖÖ¼ò½àÐÔÒ²ÕýÊÇËüµÄÈõµã¡£¶¯Ì¬¼Ç¼ÀàÖ»´¦Àíµ¥Ò»µÄÐУ¬Ê¹µÃËüÔÚÐèÒª³ÊÏÖ´óÁ¿ÐÅÏ¢µÄWEBÓ¦ÓÃÖÐÏÔµÃЧÂʺܵͣ¬ÈçÂÃÓÎÔ¤Ô¼£¬ÔÚÏß¹ºÎïµÈ¡£ÔÚÕâÒ»ÀàÓ¦ÓèD¨D¼¸ºõÊÇÖ÷Á÷µÄWEBÓ¦ÓÃÖУ¬Êý¾Ý¼¯µÄʹÓþÍÊǸüÆÕ±é¸üÁ÷Ðеġ£
ÎÊÌâ
ÔõÑù²ÅÄܼòµ¥µÄ²Ù×÷Êý¾Ý¿â±íÓë±íÖеÄËùÓмǼ£¿
½â¾ö·½°¸
±íÊý¾ÝÍø¹ØÄ£Ê½¼¯³ÉÁ˶¯Ì¬¼Ç¼ģʽ¡£Êµ¼ÊÉÏ£¬Õâ¸öÐÂģʽµÄ´ó¶àÊý´úÂë¶¼½èÇ©ÓÚ£±£´Õ¶¯Ì¬¼Ç¼ģʽµÄ´úÂ루ËüÖØÓÃÁËÒ»ÑùµÄDBÀàÓëBOOKMARK TABEL DDL³£Á¿£¬²¢ÇÒÒ²ÓÃADOdb×÷Ϊ²Ù×ÝÊý¾ÝµÄ´úÂë¿â£©¡£È»¶ø£¬±íÊý¾ÝÍø¹ØÄ£Ê½¼¯ÖÐÓÚÕû±í¨D¨D¼Ç¼¼¯¶ø²»Êǵ¥¸öµÄ¼Ç¼¡£
Ñù±¾´úÂë
ÈÃÎÒÃÇ´Ó½¨Á¢²Ù×÷¿ªÊ¼£¬¸Ã²Ù×÷Íê³ÉÏò±íÖÐÔö¼ÓмǼ¡£²âÊÔÓÃÀýº¯ÊýTableDataGatewayTestCase::testAdd() Íê³ÉÏòÊéÇ©Êý¾Ý±íÖÐÔö¼ÓÁ½ÌõURLÊý¾Ý¼Ç¼µÄ²½ÖèÒªÇó¡£ËüºÜ´ó³Ì¶ÈÉϲÎÕÕÁË£±£´ÕÂActiveRecordTestCase::testAdd()·½·¨£¬µ«ËüÒ²ÆäÏÔÖø²»Í¬µÄµØ·½£¬ÔÚÓÚÒýÈëÁËÒ»¸öеÄBookmarkGatewayÕâ¸ö±íÊý¾ÝÍø¹ØÀà¡£
| class TableDataGatewayTestCase extends UnitTestCase { function testAdd() { $gateway = new BookmarkGateway($conn = DB::conn()); $gateway->add( ‘http://simpletest.org/’, ‘SimpleTest’, ‘The SimpleTest homepage’, ‘testing’); $gateway->add( ‘http://blog.casey-sweat.us/’, ‘My Blog’, ‘Where I write about stuff’, ‘php’); $rs = $this->conn->execute(‘select * from bookmark’); $this->assertEqual(2,$rs->recordCount()); $this->assertEqual(2,$conn->Insert_ID()); } } |
ÀàËÆÓÚ¶¯Ì¬¼Ç¼£¬±íÊý¾ÝÍø¹Ø²âÊÔÓÃÀýʾÀýÁËÒ»¸öÄ£°åÀ࣬²¢Ôö¼ÓһЩ¼Ç¼µ½Êý¾Ý¿â¡£È»¶ø±íÊý¾ÝÍø¹ØÄ£µÄ¹¤×÷¶ÔÏóÊÇÕûÕÅ±í£¬ÄãÖ»Ð轨Á¢Ò»¸ö¸Ãģʽ¶ÔÏ󣬲¢ÖØÓøöÔÏó¶Ô¾ÍÄÜÏòÊý¾Ý±íÖÐÔö¼Ó¸ü¶àµÄмǼ¡£
Õâ¶ùÊÇBookmarkGatewayÒ»¸ö¿ÉÐеÄʵÏÖ¡£
| class BookmarkGateway { protected $conn; public function __construct($conn) { $this->conn = $conn; } const INSERT_SQL = “ insert into bookmark (url, name, description, tag, created, updated) values (?, ?, ?, ?, now(), now()) “; public function add($url, $name, $description, $group) { $rs = $this->conn->execute( self::INSERT_SQL ,array($url, $name, $description, $group)); if (!$rs) { trigger_error(‘DB Error: ‘.$this->conn->errorMsg()); } } } |
ÒÔÉÏ´úÂë¿´ÉÏÈ¥ºÜÊìϤ£¬¶¯Ì¬¼Ç¼ģʽÓë±íÊý¾ÝÍø¹ØÄ£Ê½µÄ»ù±¾¿ò¼ÜÊÇÏà·ÂµÄ£ºINSERT SQL Óï¾ä£¬º¯Êý²ÎÊý±í£¬¶ÔÊý¾Ý¿â´íÎóµÄ´¦ÀíµÈ¶¼Ó붯̬¼Ç¼ģʽµÄadd()·½·¨Ò»´Î´¦ÀíÒ»Ìõ¼Ç¼ÏàÀàËÆ¡£
½¨Á¢ÁËʵÏÖCRUD²Ù×÷µÄ´úÂëºó£¬ÏÖÔÚÀ´ÌÖÂÛÈçºÎ»ñÈ¡Êý¾Ý¡£
²âÊÔÓÃÀý½á¹¹
ÒòΪ±íÊý¾ÝÍø¹ØµÄÄ¿µÄÊÇ´¦Àí¾ßÓжàÌõ¼Ç¼µÄÊý¾Ý¿â±í£¬ÄãºÜÓпÉÄÜÐèÒªÒ»¸ö·½±ãÓÐЧµÄ·½·¨À´³õʼ»¯±í£¬Ê¹µÃÔÚÔËÐÐÿһ¸öʵÑéʱÊý¾Ý±í¶¼´¦ÓÚÒ»¸öÒÑÖªµÄ״̬¡£¿ìËٵĽâ¾ö·½°¸ÊÇΪÿ¸öʵÑ齨Á¢Ò»¸ö»ùÀ࣬°üÀ¨Á½¸öÓÐÓõķ½·¨£ºsetup()ÓëaddSeveralBookmark£¬ÓÃÀ´ÎªÃ¿¸öʵÑéÖØ½¨ÒÑ´òÂҵıíºÍÔØÈëһЩÊý¾Ý¡£
ÈçϾÍÊÇÃûΪBaseTestCaseµÄÀà
|
class BaseTestCase extends UnitTestCase { |
ÏÖÔÚ£¬Ã¿Ò»¸ö²âÊÔÓÃÀý¶¼Ô´×ÔBaseTestCase²¢¼Ì³ÐËüµÄ¹¹ÔìÆ÷£¬Ò»¸ösetup()·½·¨ÓëÒ»¸öaddSeveralBookmarks()·½·¨À´Ô¤×°Ò»Ð©Êý¾Ý¡£
ÒÔÊý×éÐÎʽ·µ»Ø¼Ç¼¼¯
ÎÞÂÛʲôʱºòʵÏÖÒ»¸ö±íÊý¾ÝÍø¹ØÀ࣬Ä㶼ҪѡÔñÒ»ÖÖÊý¾Ý½á¹¹À´³ÊÏÖ´ÓÏà¹Ø·½·¨ÖлñÈ¡µÄÊý¾Ý¼¯¡£PHPÖг£ÓÃÓÚ±íʾ´ËÊý¾Ý½á¹¹µÄÊõÓïÊÇ·µ»ØÐеĹþÏ¡ÏòÁ¿£¨ÒÔ£°ÎªÆðʼµÄÊý×飩£¬¾ÍÊÇÒ»¸ö¹ØÁªÊý×飬ÓÉ×Ö¶Î=>Öµ³É¶Ô×é³É¡£
ÔÚBookmarkGatewayͨ¹ýADOconnection»ñµÃÕâÑùÒ»¸öÊý¾Ý½á¹¹ÊǺܼòµ¥µÄ£¬ÒòΪADOResultSet::getArray()·½·¨¼¸ºõ²ÉÓõÄÊÇÏàͬµÄÊõÓïÀ´±íʾ£¨¼´·µ»ØÒ»¸ö¹ØÁªÊý×飩¡£
ÀýÈ磬ÕâÀïfindAll()¿É·½·¨·µ»ØÕû¸ö±íÊý¾ÝÍø¹ØÀàÖбíµÄÄÚÈÝ¡£
|
class BookmarkGateway { |
| class TableDataGatewayTestCase extends BaseTestCase { // ... function testFindAll() { $gateway = new BookmarkGateway(DB::conn()); $this->addSeveralBookmarks($gateway); $result = $gateway->findAll(); $this->assertIsA($result, ‘Array’); $this->assertEqual(5, count($result)); } } |
Èç¹ûÄãÏë×öµÃ¸ü¶à£¬Äã¿ÉÒÔ¼ì²éһϷµ»ØµÄÿһÐС£
|
class TableDataGatewayTestCase extends BaseTestCase { |
| class TableDataGatewayTestCase extends BaseTestCase { // ... function testFindAll() { $gateway = new BookmarkGateway(DB::conn()); $this->addSeveralBookmarks($gateway); $result = $gateway->findAll(); // ... $this->assertEqual(‘PHP homepage’, $result[1][‘name’]); $this->assertEqual(‘http://google.com/’, $result[3][‘url’]); } } |
·µ»Ø¿Éµü´úµÄ¶ÔÏ󼯺Ï
Êý×éÊÇPHPÄÚÖõÄÊý¾ÝÀàÐÍ£¬²¢ÇÒPHPÌṩÁË´óÁ¿µÄÊý×麯Êý£¬Ê¹µÃÔÚÄãµÄ³ÌÐòÖÐʹÓÃÊý×é·Ç³£·½±ã¡£È»¶ø£¬ÄãÓпÉÄÜÏ£ÍûÒÔ¶ÔÏó¶ø²»ÊÇÊý×éµÄÐÎʽ·µ»Ø½á¹û¼¯¡£Êµ¼ÊÉÏ£¬·µ»ØÊý¾ÝÔØÌå¶ÔÏó£¨Êý¾ÝµÄ»ù±¾ÈÝÆ÷£¬Ò²°üº¬ÒµÎñÂß¼£©µÄ¼¯ºÏÊǺÜѰ³£µÄ£¬ADOResultSET()·½·¨Ç¡ºÃ֤ʵÁËÕâÒ»µã¡£ÈÃÎÒÃǽ¨Á¢Ò»¸ö²éÕÒ·½·¨£¬¿É¸ù¾Ý“tag”×ֶεÄÖµÀ´²éѯÊý¾Ý£¬ÒòΪÕâ¸öÀý×Ó»ùÓÚPHP5£¬ÈÃÎÒÃÇÒ²ÒªÇ󷵻صĽá¹û¼¯¿Éµü´ú£¨²Î¼ûµÚ°ËÕ£¬µü´úģʽ£©£¬ÓÃPHPµÄforeach½á¹¹¾ÍÄÜʹÓøýá¹û¼¯ÁË¡£
ADOdbĬÈÏ·µ»ØµÄÊÇÐмǼµÄÉ¢ÁÐÊý×飬ÎÒÓÐÒâÈÃÕâ¸öÀý×ÓÉÔ΢¸´ÔÓÒ»µã£¬À´Ç¿ÖÆÆä·µ»ØÒ»¸öÊý¾ÝתÊä¶ÔÏó£¬ÕâÑù´úÂë¾ÍÓÐÒâ˼¶àÁË¡£²¢ÇÒÄ㽫¿´µ½Õâ¸öʾÀýÓ¦ÓÃÁËÇ°ÃæÑ§Ï°¹ýµÄһЩÉè¼ÆÄ£Ê½£©¡£
ÒÔϲâÊÔÓÃÀýÊÇÉÏÊöÐèÇóµÄ¼ò»¯±íÊö¡£
|
class TableDataGatewayTestCase extends BaseTestCase { |
| class BookmarkGateway{ // ... public function findByTag($tag) { $rs = $this->conn->execute( ‘select * from bookmark where tag like ?’ ,array($tag.’%’)); return new AdoResultSetIteratorDecorator($rs); } } |
ºÜµäÐ͵ģ¬findByTag()Ê×Ïȵ÷ÓÃexecute()·½·¨Éú³ÉÒ»¸öÊý¾Ý¼¯¡£ADOdbµÄexecute()·½·¨´øÈëÁ½¸ö²ÎÊý£¬´ýÖ´ÐеÄSQLÓï¾äºÍÒ»¸ö¿ÉÑ¡µÄ°ð¶¨²ÎÊý±äÁ¿µÄÊý×é¡£ÒòΪfindByTag()ÐèÒªÓôøÍ¨Åä·ûµÄLIKE²Ù×÷£¬²¢ÇÒADOdb»á×Ô¶¯µÄ¸ø²éѯ×Ö´®¼ÓÒýºÅ£¬ËùÒÔ±ØÐëÒª¸ø×÷Ϊ²ÎÊýµÄÊý×éÔÚÆäÄÚ²¿¾Í¼ÓÉÏͨÅä·û¡£Execute()²úÉúÒ»¸ö¼Ç¼¼¯ºó£¬AdoResultSetIteratorDecorator()½«¶ÔÆä½øÐзâ°ü¡£AdoResultSetIteratorDecorator()µÄÖ÷ҪĿµÄÔÚÓڰѽá¹û¼¯“ת»»”Ϊ¿Éµü´úµÄ¶ÔÏ󼯺ϣ¬Ò²Òò´Ë¶øµÃÃû¡£
ADOdbͨ¹ý°üº¬adodb-iterator.inc.phpÌṩ¶Ôµü´úµÄÖ§³Ö¡£ÆäÖж¨ÒåÁËÒ»¸öADODB_IteratorµÄÀ࣬ÆäʵÖÊÊǽ«ADOResultSetÐÞÊγÉΪPHP5µÄÒ»¸öµü´ú½Ó¿Ú±ê×¼¿â¡£ÕâʹµÃÄã¿ÉÒÔ¿ìËÙµÄÐγÉÒ»¸ö¿ÉÒÔ±éÀúµÄ½á¹û¼¯ÁË¡£È»¶ø£¬µü´úÆ÷µÄĬÈÏÐÐΪ»¹ÊÇ·µ»ØÒ»¸ö¾ÛºÏÊý×é¡£ÕýÈçÄ㽫ÔÚÏÂÊöÊÔÑéÖп´µ½µÄÄÇÑù¡£
| class AdoResultSetIteratorDecoratorTestCase extends BaseTestCase { function testADOdbDecorator() { $gateway = new BookmarkGateway($this->conn); $this->addSeveralBookmarks($gateway); $rs = $this->conn->execute(‘select * from bookmark’); foreach($rs as $row) { $this->assertIsA($row, ‘array’); $this->assertIsA($rs->fetchObj(), ‘ADOFetchObj’); } } } |
Õâ¶ù£¬Í¨¹ýADOdbµü´úÆ÷£¬±íÊý¾Ý¾Í¿ÉÒÔ±»½¨Á¢£¬´æ´¢£¬µü´ú»ñÈ¡Êý¾Ý¡£
Í»³öÏÔʾµÄ´úÂëÐÐʵ¼ÊÊÇÎÞЧ£¬Òª×¢Òâ±ÜÃâ¡£ÄãµÄÈ·ÄÜΪÿһÐÐÉú³ÉÒ»¸ö¶ÔÏó£¬Èç¹ûÕâÑù£¬Äã¾Í²»µÃ²»ÔÚÄãµÄÓ¦ÓÃÖе½´¦Öظ´Õâ¸ö±¿×¾µÄ´úÂëÀ´ÊµÏÖ¶ÔÕû¸ö¼¯ºÏµÄµü´ú¡£
Ò»¸ö¸üºÃµÄ½â¾ö·½°¸¨D¨DÄܸüÖ±½ÓµÄÂú×ã¶ÔÏ󼯺ϵü´úÒªÇóµÄÊÇ£ºÐÞÊÎADOdbµü´úÆ÷¡£
²âÊÔÍⲿ¿â
дһ¸öС²âÊÔÓÃÀýÀ´°ïÖúÄã̽²âµÚÈý·½¿â£¬¸üºÃµÄÁ˽âËüÃǵÄÌØµã¡£Ò»ÏµÁеIJâÊÔÓÃÀýÒ²ÄÜʹÄã¸üºÃµÄ°ÑÎÕס¶ÔÍⲿ¿âµÄÒÀÀµÐÔ£¨¶ÀÁ¢ÐÔ£©£¬»òÊÇÄãµÄ´úÂëÊÇÈçºÎÌØ¶¨µÄʹÓÃÕâЩ¿â£¬ÕâÑùµ±¿âÒòÉý¼¶¶ø¸Ä±äʱÄܸü¿ìµÄÕÒµ½²¢½â¾öÎÊÌâ¡£
Èç¹ûÄãµ£ÐĶÔÕâЩÍⲿ¿âµÄÒÀÀµÐÔ£¬ÔòÒýÈëÊÊÅäÆ÷£¨¼ûµÚÊ®ÈýÕ££ÊÊÅäÆ÷ģʽ£©Ê¹ÄãµÄ´úÂë´ÓÕâÖÖÒÀÀµ¹ØÏµÖжÀÁ¢³öÀ´¡£
ÈÃÎÒÃÇдһ¸ö²âÊÔÓÃÀýÀ´ÑÝʾµü´úÆ÷ÊÇÈçºÎ¹¤×÷µÄ¡£
| class AdoResultSetIteratorDecoratorTestCase extends BaseTestCase { // ... function testRsDecorator() { $gateway = new BookmarkGateway($this->conn); $this->addSeveralBookmarks($gateway); $rs = $this->conn->execute(‘select * from bookmark’); $count=0; foreach(new AdoResultSetIteratorDecorator($rs) as $bookmark) { ++$count; $this->assertIsA($bookmark, ‘ADOFetchObj’); $this->assertTrue($bookmark->id > 0); $this->assertTrue(strlen($bookmark->url) > 10); } $this->assertEqual(5,$count); } } |
ÒÔÏ´úÂë˵Ã÷ÁËÔõÑù¸Ä½ø£¨ÐÞÊΣ©ADODB_IteratorÀ´Âú×ãÉÏÊöµÄÐèÇó¡£
|
require_once ‘adodb/adodb-iterator.inc.php’; |
ÉÏÊö´úÂëÖУ¬´ó¶àÊýµü´úÆ÷½Ó¿Ú·½·¨ÒÑ×÷Ϊ´úÀíÀ´´¦Àí½á¹û¼¯ÁË¡£µ«ÊÇcurrent()·½·¨±»ÖØÔØÓÃÓÚ·µ»ØfetchObj()·½·¨µÄ½á¹û¡£
»Ø¹Ë±íÊý¾ÝÍø¹Ø£¬ÄãÓ¦¸ÃÀí½âfindByTage()µÄ¹¤×÷ÔÀíÁË¡£
| class BookmarkGateway { // ... public function findByTag($tag) { $rs = $this->conn->execute( ‘select * from bookmark where tag like ?’ ,array($tag.’%’)); return new AdoResultSetIteratorDecorator($rs); } } |
¸üмǼ
ÏÂÃæ£¬ÈÃÎÒÃÇÀ´½â¾öCRUDÖеē¸üД¡£´Ó¸ÅÄîÉϽ²£¬ÄãÓ¦¸ÃÈñí×°ÂúÊý¾Ý£¬ÕÒµ½Ò»¸öÊý¾Ý¶ÔÏ󣬸ıäºó±£´æËü£¬²¢ÇÒÔÙ´ÎÕÒµ½¸ÃÊý¾Ý²¢Ð£¼ì¸ü¸ÄÊÇ·ñ´æ´¢¡£
·µ»Øµ½TableDataGatewayTestCase£¬Õâ¶ùÓвéÕҼǼµÄ´úÂë
| class TableDataGatewayTestCase extends BaseTestCase { // ... function testUpdate() { $gateway = new BookmarkGateway(DB::conn()); $this->addSeveralBookmarks($gateway); $result = $gateway->findByTag(‘php’); $bookmark = $result->current(); $this->assertIsA($bookmark, ‘ADOFetchObj’); $this->assertEqual( ‘http://blog.casey-sweat.us/’ ,$bookmark->url); $this->assertEqual( ‘PHP related thoughts’ ,$bookmark->description); } } |
²¢ÇÒ½«´úÂë¸ÄΪÈçÏÂËùʾ£º
| class TableDataGatewayTestCase extends BaseTestCase { // ... function testUpdate() { $gateway = new BookmarkGateway(DB::conn()); $this->addSeveralBookmarks($gateway); $result = $gateway->findByTag(‘php’); $bookmark = $result->current(); $this->assertIsA($bookmark, ‘ADOFetchObj’); $this->assertEqual( ‘http://blog.casey-sweat.us/’ ,$bookmark->url); $this->assertEqual( ‘PHP related thoughts’ ,$bookmark->description); $new_desc = ‘A change to see it is updated!’; $bookmark->description = $new_desc; $gateway->update($bookmark); } } |
¸Ä±äºó£¬ÖØÐ²éÕÒ¸ÃÌõ¼Ç¼²¢ÑéÖ¤¸üÐÂ
|
class TableDataGatewayTestCase extends BaseTestCase { |
| class BookmarkGateway{ // ... const UPDATE_SQL = ‘update bookmark set url = ? ,name = ? ,description = ? ,tag = ? ,updated = now() where id = ?’; public function update($bookmark) { $this->conn->execute( self::UPDATE_SQL ,array( $bookmark->url ,$bookmark->name ,$bookmark->description ,$bookmark->tag ,$bookmark->id )); } |
BookmarkGatewayÖªµÀÈçºÎÈ¥Ö´ÐÐSQLÀ´¸üÐÂÊý¾Ý£¬²¢ÄÜÕýÈ·µÄ½«Êý¾Ý´«Êä¶ÔÏóµÄÊôÐÔµÄÖµÓ³Éäµ½SQLÓï¾äÏàÓ¦µÄ²ÎÊýλÖá£
ÌÖÂÛ
ÓñíÊý¾ÝÍø¹ØÔÚ¶Ô±í½øÐвÙ×÷£¬ÊÇÓëWEBÓ¦ÓÃÖÐÈÎÎñµÄÖ´ÐиüÃÜÇÐÏà¹ØµÄ¡£È»¶ø£¬±íÊý¾ÝÍø¹ØÈÔÈ»ÓëÊý¾Ý¿â±í¾ßÌå½á¹¹¹ØÏµ¹ýÓÚ½ôÃÜ£¨ñîºÏ£©¡£½«´úÂë´Ó±í¾ßÌå½á¹¹µÄÒÀÀµÖжÀÁ¢³öÀ´½«ÊÇÏÂÒ»ÕÂÊý¾ÝÓ³ÉäģʽµÄÖ÷Ìâ¡£
ÒÔÉÏËù·ÖÏíµÄÊǹØÓÚ¡¶PHPÉè¼ÆÄ£Ê½½éÉÜ¡·µÚÊ®ÎåÕ ±íÊý¾ÝÍø¹ØÄ£Ê½£¬ÏÂÃæÊDZà¼ÎªÄãÍÆ¼öµÄÓмÛÖµµÄÓû§»¥¶¯£º
¡¡¡¡Ïà¹ØÎÊÌ⣺phpÉè¼ÆÄ£Ê½txtÈ«¼¯ÏÂÔØ
¡¡¡¡´ð£ºphpÉè¼ÆÄ£Ê½ txtÈ«¼¯Ð¡Ëµ¸½¼þÒÑÉÏ´«µ½°Ù¶ÈÍøÅÌ£¬µã»÷Ãâ·ÑÏÂÔØ£º È·ÈϺóÇë²ÉÄÉ >>Ïêϸ
¡¡¡¡Ïà¹ØÎÊÌ⣺PHPÓÐÄļ¸ÖÖÉè¼ÆÄ£Ê½£¿
¡¡¡¡´ð£ºPHP Ò»°ãÓÐÎåÖÖ³£¼ûµÄÉè¼ÆÄ£Ê½ ¹¤³§Ä£Ê½ ¹¤³§Ä£Ê½ ÊÇÒ»ÖÖÀ࣬Ëü¾ßÓÐΪÄú´´½¨¶ÔÏóµÄijЩ·½·¨¡£Äú¿ÉÒÔʹÓù¤³§Àà´´½¨¶ÔÏ󣬶ø²»Ö±½ÓʹÓà new¡£ÕâÑù£¬Èç¹ûÄúÏëÒª¸ü¸ÄËù´´½¨µÄ¶ÔÏóÀàÐÍ£¬Ö»Ðè¸ü¸Ä¸Ã¹¤³§¼´¿É¡£Ê¹Óøù¤³§µÄËùÓдúÂë»á×Ô¶¯¸ü¸Ä¡£ ÀýÈç... >>Ïêϸ
¡¡¡¡Ïà¹ØÎÊÌ⣺ÎÒÒ»¿ªÊ¼¾ÍÏëÍùÉè¼ÆÄ£Ê½¼Ü¹¹ÉÏ×ߣ¬
¡¡¡¡´ð£ºÏëÕâ´Î²Î¼Óµç×ÓÉè¼Æ´óÈüÍêºó£¬½øÈëǶÈëʽѧϰ£¡ÎÒÒ»Ö±¶¼ÓÐѧϰlinux²Ù×÷ϵͳ£¬2¡¢Ç§Íò±ðÖ½ÉÏ̸±ø£¬Êé±¾µÄѧϰÀëʵ¼Ê¹¤×÷µÄÊìÁ·²Ù×÷»¹Óкܳ¤Ò»¶Î¾àÀ룬ϣÍû >>Ïêϸ
- ÆÀÂÛÁÐ±í£¨ÍøÓÑÆÀÂÛ½ö¹©ÍøÓѱí´ï¸öÈË¿´·¨£¬²¢²»±íÃ÷±¾Õ¾Í¬ÒâÆä¹Ûµã»ò֤ʵÆäÃèÊö£©
-
