0

我试图了解 PHP 中的内置类以及如何使用它们。我也在尝试使用正确的语言来描述这些“事物”。以 DateTime 类为例。

所以现在我在这个类上看到了一个方法,它用 DateTime::setDate 表示。那么我是否正确地说,“这是具有称为 setDate 方法的 DateTime 类?此外,如果您阅读有关 setDate 的 DateTime 类的 PHP 手册,您会发现:

DateTime::setDate <--这是否意味着我可以在代码中使用它?如:DateTime::setDate(); ?

我确实看到了如何创建一个对象,如下所示:

<?php
$date = new DateTime();
$date->setDate(2001, 2, 3);
echo $date->format('Y-m-d');// how would you know to do this? I thought $date->year;
?>

这来自: public DateTime DateTime::setDate ( int $year , int $month , int $day )

同样从正上方的行中,我应该能够在不看示例的情况下弄清楚如何使用它?

任何好的输入将不胜感激。

谢谢,吉姆

4

4 回答 4

1

除非一个方法被表示为 being static,否则你不能在代码中调用它classname::methodname();。在代码描述中,::基本上只是说“这个方法属于这个类”。是的,这有点令人困惑。

于 2012-09-09T15:11:05.707 回答
1

我只是讨厌::参考中的符号,我一直认为我正在处理一个很长的静态方法列表。

无论如何,它来自C++ 命名空间符号,因此DateTime::diff应该被阅读为“函数diff属于类DateTime”,但似乎很清楚,因为我在 DateTime 参考页面上!

为了让事情更清楚,“双冒号”运算符被称为T_PAAMAYIM_NEKUDOTAYIM[实际上是双冒号的希伯来语]。

长话短说,->除非您阅读方法签名中的静态关键字,否则请使用符号。

于 2012-09-09T15:21:12.490 回答
0

实际上我从来不明白他们为什么::在文档中使用运算符,我觉得它很混乱。

但是当文档说DateTime::setDate这意味着这是方法定义时。您必须首先使用以下方法实例化该类:

$instance = new DateTime();

然后调用实例上的方法:

$instance->setDate($dateString);

这就是方法在类对象上的工作方式,它被写成Classe::method.

于 2012-09-09T15:10:43.017 回答
0

从 PHP 帮助中,您可以找到以下表达式:“有时在基类中引用函数和变量或在还没有任何实例的类中引用函数很有用。 :: 运算符用于此目的。”
:: 运算符用于调用基类的函数,并忽略由覆盖该方法的基类生成的类。

<?php
class A {
    function example() {
        echo "I am the original function A::example().<br />\n";
    }
}

class B extends A {
    function example() {
        echo "I am the redefined function B::example().<br />\n";
        A::example();
    }
}

// there is no object of class A.
// this will print
//   I am the original function A::example().<br />
A::example();

// create an object of class B.
$b = new B;

// this will print 
//   I am the redefined function B::example().<br />
//   I am the original function A::example().<br />
$b->example();
?> 
于 2012-09-09T15:26:46.977 回答