Ê×Ò³
ѧϰ
»î¶¯
רÇø
¹¤¾ß
TVP
·¢²¼
¾«Ñ¡ÄÚÈÝ/¼¼ÊõÉçȺ/ÓŻݲúÆ·,¾¡ÔÚС³ÌÐò
Á¢¼´Ç°Íù

ϵͳѧϰPHPÖ®ÃæÏò¶ÔÏó£¨ÖУ©

¼Ì³Ð

¼Ì³ÐÒÑΪ´ó¼ÒËùÊìÖªµÄÒ»¸ö³ÌÐòÉè¼ÆÌØÐÔ£¬PHP µÄ¶ÔÏóÄ£ÐÍҲʹÓÃÁ˼̳С£¼Ì³Ð½«»áÓ°Ïìµ½ÀàÓëÀ࣬¶ÔÏóÓë¶ÔÏóÖ®¼äµÄ¹Øϵ¡£

±ÈÈ磬µ±À©Õ¹Ò»¸öÀ࣬×ÓÀà¾Í»á¼Ì³Ð¸¸ÀàËùÓй«ÓеĺÍÊܱ£»¤µÄ·½·¨¡£³ý·Ç×ÓÀา¸ÇÁ˸¸ÀàµÄ·½·¨£¬±»¼Ì³ÐµÄ·½·¨¶¼»á±£ÁôÆäÔ­Óй¦ÄÜ¡£

¼Ì³Ð¶ÔÓÚ¹¦ÄܵÄÉè¼ÆºÍ³éÏóÊǷdz£ÓÐÓõģ¬¶øÇÒ¶ÔÓÚÀàËƵĶÔÏóÔö¼Óй¦ÄܾÍÎÞÐëÖØÐÂÔÙдÕâЩ¹«ÓõŦÄÜ¡£

³ý·ÇʹÓÃÁË×Ô¶¯¼ÓÔØ£¬·ñÔòÒ»¸öÀà±ØÐëÔÚʹÓÃ֮ǰ±»¶¨Òå¡£Èç¹ûÒ»¸öÀàÀ©Õ¹ÁËÁíÒ»¸ö£¬Ôò¸¸Àà±ØÐëÔÚ×ÓÀà֮ǰ±»ÉùÃ÷¡£´Ë¹æÔòÊÊÓÃÓÚÀà¼Ì³ÐÆäËüÀàÓë½Ó¿Ú¡£

class MyClass{ protected function myFunc() { echo "MyClass::myFunc()\n"; }

}

class OtherClass extends MyClass{ // ¸²¸ÇÁ˸¸ÀàµÄ¶¨Òå public function myFunc() { // µ«»¹ÊÇ¿ÉÒÔµ÷Óø¸ÀàÖб»¸²¸ÇµÄ·½·¨ parent::myFunc(); echo "OtherClass::myFunc()\n"; }

}

$class = new OtherClass();$class->myFunc();/** * Êä³ö½á¹û -> * MyClass::myFunc() * OtherClass::myFunc() */?>Static£¨¾²Ì¬£©¹Ø¼ü×Ö

ÉùÃ÷ÀàÊôÐÔ»ò·½·¨Îª¾²Ì¬£¬¾Í¿ÉÒÔ²»ÊµÀý»¯Àà¶øÖ±½Ó·ÃÎÊ¡£¾²Ì¬ÊôÐÔÓ¦ÓÃÓÚ±£´æÀàµÄ¹²ÓÐÊý¾Ý¡£

¾²Ì¬ÊôÐÔ²»ÄÜͨ¹ýÒ»¸öÀàÒÑʵÀý»¯µÄ¶ÔÏóÀ´·ÃÎÊ£¨µ«¾²Ì¬·½·¨¿ÉÒÔ£©¡£

ÓÉÓÚ¾²Ì¬·½·¨²»ÐèҪͨ¹ý¶ÔÏ󼴿ɵ÷Óã¬ËùÒÔα±äÁ¿$thisÔÚ¾²Ì¬·½·¨Öв»¿ÉÓ᣾²Ì¬ÊôÐÔ²»¿ÉÒÔÓɶÔÏóͨ¹ý -> ²Ù×÷·ûÀ´·ÃÎÊ¡£¾²Ì¬·½·¨ÀïÃæÖ»ÄÜ·ÃÎʾ²Ì¬ÊôÐÔ¡£

Óþ²Ì¬·½Ê½µ÷ÓÃÒ»¸ö·Ç¾²Ì¬·½·¨»áµ¼ÖÂÒ»¸öE_STRICT¼¶±ðµÄ´íÎó¡£ÀàµÄÄÚ²¿¿ÉÒÔͨ¹ýself»òÕßstatic¹Ø¼ü×Ö·ÃÎÊ×ÔÉí¾²Ì¬³ÉÔ±¡£

¾ÍÏñÆäËüËùÓÐµÄ PHP

¾²Ì¬±äÁ¿Ò»Ñù£¬¾²Ì¬ÊôÐÔÖ»Äܱ»³õʼ»¯ÎªÎÄ×Ö»ò³£Á¿£¬²»ÄÜʹÓñí´ïʽ¡£ËùÒÔ¿ÉÒ԰Ѿ²Ì¬ÊôÐÔ³õʼ»¯ÎªÕûÊý»òÊý×飬µ«²»Äܳõʼ»¯ÎªÁíÒ»¸ö±äÁ¿»òº¯Êý·µ»ØÖµ£¬Ò²²»ÄÜÖ¸ÏòÒ»¸ö¶ÔÏó¡£

×Ô PHP 5.3.0 Æ𣬿ÉÒÔÓÃÒ»¸ö±äÁ¿À´¶¯Ì¬µ÷ÓÃÀà¡£µ«¸Ã±äÁ¿µÄÖµ²»ÄÜΪ¹Ø¼ü×Öself£¬parent»òstatic¡£¿ÉÒÔͨ¹ýparent¹Ø¼ü×Ö·ÃÎʸ¸ÀàµÄ¾²Ì¬³ÉÔ±£¬¿ÉÒÔͨ¹ýÀàµÄÃû³ÆÔÚÀඨÒåÍⲿ·ÃÎʾ²Ì¬³ÉÔ±¡£

class Human{

static public $name = "СÃÃ";

public $height = 180;

static public function tell(){

echo self::$name;//¾²Ì¬·½·¨µ÷Óþ²Ì¬ÊôÐÔ£¬Ê¹ÓÃself¹Ø¼ü´Ê

//echo $this->height;//´í¡£¾²Ì¬·½·¨²»Äܵ÷Ó÷Ǿ²Ì¬ÊôÐÔ

//ÒòΪ $this´ú±íʵÀý»¯¶ÔÏ󣬶øÕâÀïÊÇÀ࣬²»ÖªµÀ $this ´ú±íÄĸö¶ÔÏó

}

public function say(){

echo self::$name . "ÎÒ˵»°ÁË";

//ÆÕͨ·½·¨µ÷Óþ²Ì¬ÊôÐÔ£¬Í¬ÑùʹÓÃself¹Ø¼ü´Ê

echo $this->height;

}

}

$p1 = new Human();

$p1->say();

$p1->tell();//¶ÔÏó¿ÉÒÔ·ÃÎʾ²Ì¬·½·¨

echo $p1::$name;//¶ÔÏó·ÃÎʾ²Ì¬ÊôÐÔ¡£²»ÄÜÕâô·ÃÎÊ

$p1->name//ÒòΪ¾²Ì¬ÊôÐÔµÄÄÚ´æλÖò»ÔÚ¶ÔÏóÀï

Human::say();//´í¡£say()·½·¨ÓÐ$thisʱ³ö´í£»Ã»ÓÐ$thisʱÄܳö½á¹û

//µ«php5.4ÒÔÉÏ»áÌáʾ

?>Êý¾Ý·ÃÎÊ

1.parent¹Ø¼ü×Ö¿ÉÒÔ·ÃÎʸ¸ÀàÖб»×ÓÀàÖØдµÄ·½·¨¡£

2.self¹Ø¼ü×Ö¿ÉÒÔÓÃÓÚ·ÃÎÊÀà×ÔÉíµÄ³ÉÔ±·½·¨£¬Ò²¿ÉÒÔÓÃÓÚ·ÃÎÊ×ÔÉíµÄ¾²Ì¬³ÉÔ±ºÍÀà³£Á¿£»²»ÄÜÓÃÓÚ·ÃÎÊ×ÔÉíµÄÊôÐÔ£»Ê¹Óó£Á¿µÄʱºò²»ÐèÒªÔÚ³£Á¿Ãû³ÆÇ°¼Ó$·ûºÅ¡£

3.static¹Ø¼ü×ÖÓÃÓÚ·ÃÎÊÀà×ÔÉí¶¨ÒåµÄ¾²Ì¬³ÉÔ±£¬·ÃÎʾ²Ì¬ÊôÐÔʱÐèÒªÔÚÊôÐÔÇ°ÃæÌí¼Ó$·ûºÅ

}

class ChildClass extends BaseClass{public function a(){echo "a() from ChildClass\n";parent::a(); //·ÃÎʸ¸ÀàµÄa·½·¨£»self::b(); //·ÃÎÊ×ÔÉíÀàb·½·¨echo self::MM; //·ÃÎÊ×ÔÉí³£Á¿}const MM = "i am constent";private function b(){echo "b() from ChildClass";}

}

$class = new ChildClass();

$class->a();

³éÏóÀà

PHP 5 Ö§³Ö³éÏóÀàºÍ³éÏó·½·¨¡£¶¨ÒåΪ³éÏóµÄÀ಻Äܱ»ÊµÀý»¯¡£ÈκÎÒ»¸öÀ࣬Èç¹ûËüÀïÃæÖÁÉÙÓÐÒ»¸ö·½·¨ÊDZ»ÉùÃ÷Ϊ³éÏóµÄ£¬ÄÇôÕâ¸öÀà¾Í±ØÐë±»ÉùÃ÷Ϊ³éÏóµÄ¡£±»¶¨ÒåΪ³éÏóµÄ·½·¨Ö»ÊÇÉùÃ÷ÁËÆäµ÷Ó÷½Ê½£¨²ÎÊý£©£¬²»Äܶ¨ÒåÆä¾ßÌåµÄ¹¦ÄÜʵÏÖ¡£

¼Ì³ÐÒ»¸ö³éÏóÀàµÄʱºò£¬×ÓÀà±ØÐ붨Ò常ÀàÖеÄËùÓгéÏó·½·¨£»ÁíÍ⣬ÕâЩ·½·¨µÄ·ÃÎÊ¿ØÖƱØÐëºÍ¸¸ÀàÖÐÒ»Ñù£¨»òÕ߸üΪ¿íËÉ£©¡£ÀýÈçij¸ö³éÏó·½·¨±»ÉùÃ÷ΪÊܱ£»¤µÄ£¬ÄÇô×ÓÀàÖÐʵÏֵķ½·¨¾ÍÓ¦¸ÃÉùÃ÷ΪÊܱ£»¤µÄ»òÕß¹«Óеģ¬¶ø²»Äܶ¨ÒåΪ˽Óеġ£´ËÍâ·½·¨µÄµ÷Ó÷½Ê½±ØÐëÆ¥Å䣬¼´ÀàÐͺÍËùÐè²ÎÊýÊýÁ¿±ØÐëÒ»Ö¡£ÀýÈ磬×ÓÀඨÒåÁËÒ»¸ö¿ÉÑ¡²ÎÊý£¬¶ø¸¸Àà³éÏó·½·¨µÄÉùÃ÷ÀïûÓУ¬ÔòÁ½ÕßµÄÉùÃ÷²¢ÎÞ³åÍ»¡£

ÕâÒ²ÊÊÓÃÓÚ PHP 5.4 ÆðµÄ¹¹Ô캯Êý¡£ÔÚ PHP 5.4 ֮ǰµÄ¹¹Ô캯ÊýÉùÃ÷¿ÉÒÔ²»Ò»ÑùµÄ¡£

abstract class AbstractClass{ // Ç¿ÖÆÒªÇó×ÓÀඨÒåÕâЩ·½·¨ abstract protected function getValue(); abstract protected function prefixValue($prefix); // ÆÕͨ·½·¨£¨·Ç³éÏó·½·¨£© public function printOut() { print $this->getValue() . "\n"; }

}

class ConcreteClass1 extends AbstractClass{ protected function getValue() { return "ConcreteClass1"; } public function prefixValue($prefix) { return "{$prefix}ConcreteClass1"; }

}

class ConcreteClass2 extends AbstractClass{ public function getValue() { return "ConcreteClass2"; } public function prefixValue($prefix) { return "{$prefix}ConcreteClass2"; }

}

$class1 = new ConcreteClass1;

$class1->printOut();

echo $class1->prefixValue('FOO_') ."\n";

$class2 = new ConcreteClass2;

$class2->printOut();

echo $class2->prefixValue('FOO_') ."\n";

?>½Ó¿Ú

ʹÓýӿڣ¨interface£©£¬¿ÉÒÔÖ¸¶¨Ä³¸öÀà±ØÐëʵÏÖÄÄЩ·½·¨£¬µ«²»ÐèÒª¶¨ÒåÕâЩ·½·¨µÄ¾ßÌåÄÚÈÝ¡£

½Ó¿ÚÊÇͨ¹ýinterface¹Ø¼ü×ÖÀ´¶¨ÒåµÄ£¬¾ÍÏñ¶¨ÒåÒ»¸ö±ê×¼µÄÀàÒ»Ñù£¬µ«ÆäÖж¨ÒåËùÓеķ½·¨¶¼Êǿյġ£

½Ó¿ÚÖж¨ÒåµÄËùÓз½·¨¶¼±ØÐëÊǹ«ÓУ¬ÕâÊǽӿڵÄÌØÐÔ¡£

ҪʵÏÖÒ»¸ö½Ó¿Ú£¬Ê¹ÓÃimplements²Ù×÷·û¡£ÀàÖбØÐëʵÏÖ½Ó¿ÚÖж¨ÒåµÄËùÓз½·¨£¬·ñÔò»á±¨Ò»¸öÖÂÃü´íÎó¡£Àà¿ÉÒÔʵÏÖ¶à¸ö½Ó¿Ú£¬ÓöººÅÀ´·Ö¸ô¶à¸ö½Ó¿ÚµÄÃû³Æ¡£ÊµÏÖ¶à¸ö½Ó¿Úʱ£¬½Ó¿ÚÖеķ½·¨²»ÄÜÓÐÖØÃû¡£

½Ó¿ÚÒ²¿ÉÒԼ̳У¬Í¨¹ýʹÓà extends ²Ù×÷·û¡£

ÀàҪʵÏÖ½Ó¿Ú£¬±ØÐëʹÓúͽӿÚÖÐËù¶¨ÒåµÄ·½·¨ÍêÈ«Ò»Öµķ½Ê½¡£·ñÔò»áµ¼ÖÂÖÂÃü´íÎó¡£½Ó¿ÚÖÐÒ²¿ÉÒÔ¶¨Òå³£Á¿¡£

½Ó¿Ú³£Á¿ºÍÀà³£Á¿µÄʹÓÃÍêÈ«Ïàͬ£¬µ«ÊDz»Äܱ»×ÓÀà»ò×Ó½Ó¿ÚËù¸²¸Ç¡£

// ÉùÃ÷Ò»¸ö'iTemplate'½Ó¿Ú

interface iTemplate{ public function setVariable($name, $var); public function getHtml($template);}// ʵÏÖ½Ó¿Ú

// ÏÂÃæµÄд·¨ÊÇÕýÈ·µÄclass Template implements iTemplate{ private $vars = array(); public function setVariable($name, $var) { $this->vars[$name] = $var; } public function getHtml($template) { foreach($this->vars as $name => $value) { $template = str_replace('{' . $name . '}', $value, $template); } return $template; }

}

¼Ì³Ð¶à¸ö½Ó¿Ú

interface a{ public function foo();

}

interface b{ public function bar();

}

interface c extends a, b{ public function baz();

}

class d implements c{ public function foo() { } public function bar() { } public function baz() { }

}

?>Trait

×Ô PHP 5.4.0 Æð£¬PHP ʵÏÖÁËÒ»ÖÖ´úÂ븴Óõķ½·¨£¬³ÆΪ trait¡£

Trait ÊÇΪÀàËÆ PHP µÄµ¥¼Ì³ÐÓïÑÔ¶ø×¼±¸µÄÒ»ÖÖ´úÂ븴ÓûúÖÆ¡£Trait

ΪÁ˼õÉÙµ¥¼Ì³ÐÓïÑÔµÄÏÞÖÆ£¬Ê¹¿ª·¢ÈËÔ±Äܹ»×ÔÓɵØÔÚ²»Í¬²ã´Î½á¹¹ÄÚ¶ÀÁ¢µÄÀàÖи´Óà method¡£Trait

ºÍ Class ×éºÏµÄÓïÒ嶨ÒåÁËÒ»ÖÖ¼õÉÙ¸´ÔÓÐԵķ½Ê½£¬±ÜÃ⴫ͳ¶à¼Ì³ÐºÍ Mixin ÀàÏà¹ØµäÐÍÎÊÌâ¡£

}

class ezcReflectionMethod extends ReflectionMethod { use ezcReflectionReturnInfo; /* ... */

}

class ezcReflectionFunction extends ReflectionFunction { use ezcReflectionReturnInfo; /* ... */

}

?>

´Ó»ùÀà¼Ì³ÐµÄ³ÉÔ±»á±» trait ²åÈëµÄ³ÉÔ±Ëù¸²¸Ç¡£ÓÅÏÈ˳ÐòÊÇÀ´×Ôµ±Ç°ÀàµÄ³ÉÔ±¸²¸ÇÁË trait µÄ·½·¨£¬¶ø trait Ôò¸²¸ÇÁ˱»¼Ì³ÐµÄ·½·¨¡£¶à¸ö trait£¬Í¨¹ý¶ººÅ·Ö¸ô£¬ÔÚ use ÉùÃ÷Áгö¶à¸ö trait£¬¿ÉÒÔ¶¼²åÈëµ½Ò»¸öÀàÖС£

Final ¹Ø¼ü×Ö

PHP 5 ÐÂÔöÁËÒ»¸ö final ¹Ø¼ü×Ö¡£Èç¹û¸¸ÀàÖеķ½·¨±»ÉùÃ÷Ϊ

final£¬Ôò×ÓÀàÎÞ·¨¸²¸Ç¸Ã·½·¨¡£Èç¹ûÒ»¸öÀà±»ÉùÃ÷Ϊ final£¬Ôò²»Äܱ»¼Ì³Ð¡£

Example #1 Final ·½·¨Ê¾Àý

class BaseClass { public function test() { echo "BaseClass::test() called\n"; } final public function moreTesting() { echo "BaseClass::moreTesting() called\n"; }

}

class ChildClass extends BaseClass { public function moreTesting() { echo "ChildClass::moreTesting() called\n"; }

}

// Results in Fatal error: Cannot override final method BaseClass::moreTesting()

?>

Example #2 Final ÀàʾÀý

final class BaseClass { public function test() { echo "BaseClass::test() called\n"; } // ÕâÀïÎÞÂÛÄãÊÇ·ñ½«·½·¨ÉùÃ÷Ϊfinal£¬¶¼Ã»ÓйØϵ final public function moreTesting() { echo "BaseClass::moreTesting() called\n"; }

}

class ChildClass extends BaseClass {}

// ²úÉú Fatal error: Class ChildClass may not inherit from final class (BaseClass)

?>

ÒÔÉÏ¡£

end

ÎÄ/±à¼­£ºatong

ÅÅ°æ²¼¾Ö£ºatong

Time : 2018/2/28

  • ·¢±íÓÚ:
  • Ô­ÎÄÁ´½Ó£ºhttp://kuaibao.qq.com/s/20180228G07N4X00?refer=cp_1026
  • ÌÚѶ¡¸ÌÚѶÔÆ¿ª·¢ÕßÉçÇø¡¹ÊÇÌÚѶÄÚÈÝ¿ª·Åƽ̨Õʺţ¨Æó¶ìºÅ£©´«²¥ÇþµÀÖ®Ò»£¬¸ù¾Ý¡¶ÌÚѶÄÚÈÝ¿ª·Åƽ̨·þÎñЭÒ顷תÔØ·¢²¼ÄÚÈÝ¡£
  • ÈçÓÐÇÖȨ£¬ÇëÁªÏµ cloudcommunity@tencent.com ɾ³ý¡£

ɨÂë

Ìí¼ÓÕ¾³¤ ½ø½»Á÷Ⱥ

ÁìȡרÊô 10ÔªÎÞÃż÷ȯ

˽Ïí×îР¼¼Êõ¸É»õ

ɨÂë¼ÓÈ뿪·¢ÕßÉçȺ
Áìȯ
http://www.vxiaotou.com