php function showErrMsg($strMsg){ return " font color=red ".$strMsg." /font }
在前台页面我们可以用不同的链接来实现不同的功能,例如我们有这样一个链接http://localhost/controller.php fun=a当请求到达controller.php的时候,PHP程序将会自动的执行函数a().问题的重点:在于我们在这个程序的页面首先调用了controller()函数。这个函数首先判断参数中定义的函数名称($fun的值)是否被定义,如果定义了就调用这个函数。如果在$_GET参数中fun没有定义:http://localhost/controller.php就调用一个缺省的函数def();这样的代码是不是简洁很对呢?你可以把这些代码拷贝回去,自己看看效果——我肯定的告诉你,这些代码运行时正常的!然而我也很不幸的告诉你:其实这段看起来整齐的代码有一个巨大的安全隐患在里面,很大,很大的安全隐患,具体是啥,感兴趣的朋友可以参考相关文档,相信你肯定不会把这一段代码立马用到服务器上的?另外经过测试证实,这个方法不但可以动态调用函数,并且也可以动态实例化对象,像这样:复制代码 代码如下:$obj = new $obj();代码如下: 复制代码 代码如下: php html' target='_blank'>class A { function foo() { if (isset($this)) { echo '$this is defined ('; echo get_class($this); echo ")n"; } else { echo "$this is not defined.n"; } } }
class B { function bar() { A::foo(); //parent::foo(); } }
$a = new A(); $a- foo();//动态调用,因为new了对象 A::foo();//静态调用,直接用类名去调用,没有new对象 $b = new B(); $b- bar();//在对象$b中,A::foo();进行静态调用 B::bar();
总结:静态、动态调用都指类、对象对其方法的调用,动态指的是创建(new)了对象,然后用对象变量去调用方法;静态则是没有创建对象,直接用类名去调用,至于另一个对象那就很简单了,不同的类创建不同的对象,比如class A;class B ,$a = new A();$b = new B();$a and $b 相对之间就是另一个对象了.希望本文所述对大家的php程序设计有所帮助。PHP教程