从静态方法调用非静态方法

时间:2014-03-24 11:10:32

标签: php function oop

我认为这是非常基本的功能,请帮忙。 如何在php中将非静态方法调用为静态方法。

class Country {
    public function getCountries() {
        return 'countries';
    }

    public static function countriesDropdown() {
        $this->getCountries();
    }
}

3 个答案:

答案 0 :(得分:5)

首选方式..

最好使getCountries()方法静态

<?php

class Country {
    public static function getCountries() {
        return 'countries';
    }

    public static function countriesDropdown() {
        return self::getCountries();
    }
}
$c = new Country();
echo $c::countriesDropdown(); //"prints" countries

添加self关键字会显示 PHP严格标准通知避免,您可以创建同一个类的对象实例并调用相关的方法用它。

从静态方法

调用非静态方法
<?php

class Country {
    public function getCountries() {
        return 'countries';
    }

    public static function countriesDropdown() {
        $c = new Country();
        return $c->getCountries();
    }
}

$c = new Country();
echo $c::countriesDropdown(); //"prints" countries

答案 1 :(得分:1)

您甚至使用Class Name

public static function countriesDropdown() {
    echo Country::getCountries();
}

答案 2 :(得分:1)

你不能直接这样做,因为你需要创建一个类的实例&amp;必须调用非静态方法,

class Country {
    public function getCountries() {
        return 'countries';
    }

    public static function countriesDropdown() {
        $country = new Country();
        return $country->getCountries();
    }
}

<强> DEMO