Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 不需要实例化类对象的类方法_Php_Class_Methods - Fatal编程技术网

Php 不需要实例化类对象的类方法

Php 不需要实例化类对象的类方法,php,class,methods,Php,Class,Methods,下面是今天使用方法()的类。是否可以调用today(),而不需要实例化的类对象来运行它 i、 e.不使用MyDateClass::today() MyDateClass::today()-这意味着调用静态方法,静态方法不会创建类的实例,除非存在创建实例的代码。但是你的today()不是静态的(没有staticword) 静态函数更像是一个简单的函数,而不是类方法 Class MyDateClass { public $mm; public $dd; public $yy

下面是今天使用方法()的类。是否可以调用today(),而不需要实例化的类对象来运行它

i、 e.不使用MyDateClass::today()


MyDateClass::today()
-这意味着调用静态方法,静态方法不会创建类的实例,除非存在创建实例的代码。但是你的
today()
不是静态的(没有
static
word)

静态函数更像是一个简单的函数,而不是类方法

Class MyDateClass
{
    public $mm;
    public $dd;
    public $yyyy;
    public $timestamp;

    function __construct($mm, $dd, $yyyy)
    {
        $this->mm = $mm;
        $this->dd = $dd;
        $this->yyyy = $yyyy;
    }
    function printDate(){
        echo $this->dd.'.'.$this->mm.'.'.$this->yyyy;
    }
    static function today()
    {
        return date('Y-m-d');
    }
}
MyDateClass::today(); // no instance
$instance1 = new MyDateClass('01','05','2015'); //instance1
$instance2 = new MyDateClass('01','05','2014'); //instance2
$instance1->printDate(); // prints 05.01.2015
$instance2->printDate(); // prints 05.01.2014

不,读问题again@Dagon对我来说,没有什么听起来很正确:)那是因为它是正确的;-)我认为这个问题需要重新表述,
将类属性或方法声明为静态,这样就可以在不需要实例化类的情况下访问它们。
,所以从技术上讲,这样做
MyDateClass::today()
,在没有实例化类的情况下调用函数。@mdoong-除非您必须为此将该方法定义为静态,或者禁止那些告诉您正在做错事的可怕警告内容听起来不错,我认为这个问题的措辞不清楚。谢谢
Class MyDateClass
{
    public $mm;
    public $dd;
    public $yyyy;
    public $timestamp;

    function __construct($mm, $dd, $yyyy)
    {
        $this->mm = $mm;
        $this->dd = $dd;
        $this->yyyy = $yyyy;
    }
    function printDate(){
        echo $this->dd.'.'.$this->mm.'.'.$this->yyyy;
    }
    static function today()
    {
        return date('Y-m-d');
    }
}
MyDateClass::today(); // no instance
$instance1 = new MyDateClass('01','05','2015'); //instance1
$instance2 = new MyDateClass('01','05','2014'); //instance2
$instance1->printDate(); // prints 05.01.2015
$instance2->printDate(); // prints 05.01.2014