今天儿面试,问我魔术方法是啥子,我母鸡
回家看了看,发现
就是php默认的,制定的几个方法,会在特殊情况下启动,和JAVA的构造函数一样
魔术方法有:__construct(), __destruct (), __call(), __callStatic(),__get(), __set(), __isset(), __unset (), __sleep(), __wakeup(), __toString(), __set_state,() __clone() __autoload()
如__construct()方法,就是在这个类NEW出来的时候运行的
__destruct ()方法,就是在这个类销毁时候出现时候运行的
,栗子(来自百度百科'魔术方法'):
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?php /** * 清晰的认识__construct() __destruct */ class Example { public static $link; //在类实例化的时候自动加载__construct这个方法 public function __construct($localhost, $username, $password, $db) { self::$link = mysql_connect($localhost, $username, $password); if (mysql_errno()) { die('错误:' . mysql_error()); } mysql_set_charset('utf8'); mysql_select_db($db); } /** * 通过__construct链接好数据库然后执行sql语句...... */ //当类需要被删除或者销毁这个类的时候自动加载__destruct这个方法 public function __destruct() { echo '<pre>'; var_dump(self::$link); mysql_close(self::$link); var_dump(self::$link); } } $mysql = new Example('localhost', 'root', 'root', 'test'); |
例3输出结果为:
resource(2) of type (mysql link)
resource(2) of type (Unknown)
为什么这个玩意要叫魔术方法鸭?
很魔术嘛?
就叫做预制事件不好吗?
点名批评.jpg
(PHP的错,我没有错,理不直气也壮.jpg)