使用するだけself::...
では、メソッドが静的であることを意味してはなりません。非静的メソッドでも同様に機能しますparent::
。これはPHP マニュアル - Scope Resolution Operator (::)self::
で見つけることができます。回答の最後に、例示的なコードの抜粋をいくつか追加します。
おそらく、この以前の質問のすべての回答を読みたいと思うかもしれません:
全体として、この回答の私の短い説明よりも詳細な情報が得られます。
::
それらが使用するスコープ解決演算子に混乱したかもしれません。私はそれを把握するのと同様の理解の問題を抱えていました。
ただし、そのような限られた理由だけで静的メソッドを使用することを選択しないでください。これらの静的クラス メソッドは、非常に限られた狭い状況でのみ使用する必要があります。経験則として:
「静的クラス メソッドを使用しないでください。」
オブジェクト指向プログラミングから始めたい場合は、通常のオブジェクト メソッドを使用してください。
以下は、標準の (非静的) メソッドで使用されていることを示す既存のコードからの抜粋です。self::
parent::
<?php
...
/**
* Class XMLElementIterator
*
* Iterate over XMLReader element nodes
*/
class XMLElementIterator extends XMLReaderIterator
{
private $index;
private $name;
private $didRewind;
/**
* @param XMLReader $reader
* @param null|string $name element name, leave empty or use '*' for all elements
*/
public function __construct(XMLReader $reader, $name = null)
{
parent::__construct($reader);
$this->setName($name);
}
/**
* @return void
*/
public function rewind()
{
parent::rewind();
$this->ensureCurrentElementState();
$this->didRewind = true;
$this->index = 0;
}
/**
* @return XMLReaderNode|null
*/
public function current()
{
$this->didRewind || self::rewind();
$this->ensureCurrentElementState();
return self::valid() ? new XMLReaderNode($this->reader) : null;
}
...