php类的静态调用和实例化调用有哪些不同点?-PHP问题

资源魔 18 0

没有同点有:一、动态办法正在顺序开端时天生内存,实例办法正在顺序运转中天生内存;二、动态办法能够间接挪用,实例办法要先成生实例,经过实例挪用办法;三、动态的内存是延续的,实例请求的是离散的空间,以是不动态办法快,动态内存是无限制的。

动态办法只有一个,无论你挪用几何次,都是共用的,是不工具的概念,因而不克不及正在动态办法外面应用$this挪用,假如非患上挪用的话,只能实例化本身类

实例化纷歧样,每个实例化是一个工具,领有多个。

上面用一个实例来理解一下

<?php
Error_reporting(E_ALL|E_STRICT);
 
class A{
    
    public function bar(){
        echo 'bar'.PHP_EOL;
    }
    public static function foo(){
        echo 'foo'.PHP_EOL;
    }
}
 
A::bar();//会报错
A::foo();//正确
$obj = new A();
$obj -> foo();//正确
/* 
  bar()是一个非动态办法,应该由工具来挪用,但用动态来挪用此办法也能够执行,而严格状态下,此办法会执行,同时报错, 
  Strict Standards: Non-static method Human::easyeat() should not be called statically in........
  然而实例化的类是能够挪用动态办法的。
*/
<?php
 
class A{
    public $name = 'kangbazi';
 
    public function bar(){
        echo 'bar'.PHP_EOL;
    }
    public static function foo(){
        echo self::$name.PHP_EOL;//报错
    }
}
 
A::foo();
 
/*
    动态办法不克不及挪用非动态属性 。不克不及应用self::挪用非动态属性。
*/

做一个小总结:

最年夜的区分正在于内存。

动态办法正在顺序开端时天生内存,实例办法正在顺序运转中天生内存,

以是动态办法能够间接挪用,实例办法要先成生实例,经过实例挪用办法,动态速率很快,然而多了会占内存。

任何言语都是对内存以及磁盘的操作,至于能否面向工具,只是软件层的成绩,底层都是同样的,只是完成办法没有同。

动态内存是延续的,由于是正在顺序开端时就天生了,而实例请求的是离散的空间,以是当然不动态办法快,

并且动态内存是无限制的,太多了顺序会启动没有了。

保举教程:《php教程》

以上就是php类的动态挪用以及实例化挪用有哪些没有同点?的具体内容,更多请存眷资源魔其它相干文章!

标签: php php教程 php故障解决 php使用问题 静态调用 实例化调用

抱歉,评论功能暂时关闭!