Heim > php教程 > php手册 > PHP5试用(二)

PHP5试用(二)

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-05-22 17:20:56
Original
1325 Leute haben es durchsucht

抽象类

抽象类不能被实例化。

抽象类与其它类一样,允许定义变量及方法。

抽象类同样可以定义一个抽象的方法,抽象类的方法不会被执行,不过将有可能会在其派生类中执行。

例六:抽象类

<?php
abstract class foo {
    protected $x;
    abstract function display();
    function setX($x) {
        $this->x = $x;
    }
}
class foo2 extends foo {
    function display() {
        // Code
        
    }
}
?>
Nach dem Login kopieren

__call

PHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。

例七:__call

<?php
class foo {
    function __call($name, $arguments) {
        print ("Did you call me? I&#39;m $name!");
    }
}
$x = new foo();
$x->doStuff();
$x->fancy_stuff();
?>
Nach dem Login kopieren

这个特殊的方法可以被用来实现“过载(overloading)”的动作,这样你就可以检查你的参数并且通过调用一个私有的方法来传递参数。

例八:使用 __call 实现“过载”动作

<?php
class Magic {
    function __call($name, $arguments) {
        if ($name == &#39;foo&#39;) {
            if (is_int($arguments[0])) $this->foo_for_int($arguments[0]);
            if (is_string($arguments[0])) $this->foo_for_string($arguments[0]);
        }
    }
    private function foo_for_int($x) {
        print ("oh an int!");
    }
    private function foo_for_string($x) {
        print ("oh a string!");
    }
}
$x = new Magic();
$x->foo(3);
$x->foo("3");
?>
Nach dem Login kopieren

__set 和 __get

这是一个很棒的方法,__set 和 __get 方法可以用来捕获一个对象中不存在的变量和方法。

例九: __set 和 __get

<?php
class foo {
    function __set($name, $val) {
        print ("Hello, you tried to put $val in $name");
    }
    function __get($name) {
        print ("Hey you asked for $name");
    }
}
$x = new foo();
$x->bar = 3;
print ($x->winky_winky);
Nach dem Login kopieren


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage