让我澄清你的疑惑。
-
首先,我将解释类和对象(有什么区别..)
-
然后我将澄清函数和方法(有什么区别..)
谈论类 :: 这是你的逻辑实现..
对象 :: 它是你的类的一个实例 (实例 ~ COPY ~ 克隆 ~ ...)
当您使用 --NEW-- 运算符--->您正在创建类的对象(除了 COPY 之外什么都没有)。
类 =============> ~NEW~ ==========> 对象(类的新副本..) 类似
函数 ==========> ~NEW~ =======>方法(属于对象而不是类)
类是您正在编写的程序,而对象是正在执行的类的副本。
类驻留在 ROM(永久)中,而对象驻留在 RAM(临时内存区域..)
当你将一个函数声明为静态时,它只属于类而不是对象,你可以使用ClassName::staticFunctionName()调用same(static function)。
这就是为什么不存在STATIC_METHOD而不是STATIC_FUNCTION !!!
代码示例::
<?php
class Dog extends CI_Controller {
public function __construct() {
parent::__construct();
}
public function index($params = '') {
}
private $name = 'dog';
public static function name() {
echo 'Inside static function & inside class' . '<br>';
echo __METHOD__ . '<br>';
echo __FUNCTION__ . '<br>';
}
public function test2() {
echo 'Inside NON STATIC function & inside class' . '<br>';
echo __FUNCTION__ . '<br>';
echo __METHOD__ . '<br>';
}
}
function test() {
echo 'Inside NON STATIC function & OUTSIDE class' . '<br>';
echo __FUNCTION__ . '<br>';
echo __METHOD__ . '<br>';
}
Dog::name();
test();
$somevar = new Dog;
$somevar->test2();
输出::
Inside static function & inside class
Dog::name //Class::function
name
Inside NON STATIC function & OUTSIDE class
test
test
Inside NON STATIC function & inside class
test2
Dog::test2 //Object::method
在你的情况下,当你在静态上下文中使用方法时,它会显示类名,如果它是一个非静态(简单函数),它将只显示函数名称。