2

Zend Framework を使用して、モデル クラスの特定のメソッドに対して不正と見なされる引数が渡された場合に、そのメソッド内で例外をスローしたいと考えています。たとえば、Java では、次のようにします。

public void addName(String name) {
 if (name.equals('')) {
  throw new IllegalArgumentException();
 }
 // Other code if everything is ok.
} 

しかし、私が見る限り、PHP と Zend Framework には .NET のような基本的な組み込み例外クラスがありませんIllegalArgumentException。では、何が問題なのかを実際に説明する例外を適切に渡すには、何を使用すればよいでしょうか? そのような例外クラスを自分で作成しますか? しかし、フレームワークが排除するのは、この種のコードではないでしょうか?

Zend Framework の学習を始めたばかりです。私は人生であまり PHP を書いたことがありません。よろしければ、まともな PHP プログラマーにとって明らかなはずのことをいくつか教えてください。

4

1 に答える 1

2

PHPSPL例外クラスで使用可能な例外のリストを次に示します。

Exception
     LogicException
         BadFunctionCallException
         BadMethodCallException
         DomainException
         InvalidArgumentException
         LengthException
         OutOfRangeException
     RuntimeException
         OutOfBoundsException
         OverflowException
         RangeException
         UnderflowException
         UnexpectedValueException

Zend FrameworkZend_Exceptionは、PHPに組み込まれている例外の単なるラッパーですが、主要なコンポーネントのほとんどには、呼び出し可能な例外クラスがあります。

例えば:

public function setId($id)
    {
        $validator = new My_Validator_Id();
        if ($validator->isValid($id)) {
            $this->id = $id;
            return $this;
        } else {
            throw new Zend_Validate_Exception("$id is not a valid value for the ID field.");
        }
    }

またはPHPの組み込みの例外を使用して:

public function __get($name)
    {
        $property = strtolower($name);

        if (!property_exists($this, $property)) {
            throw new \InvalidArgumentException(
                "Getting the property '$property' is not valid for this entity");
        }
        //truncated...
    }

Zend Framework 2には、さらに具体的なものがexceptionsあります。

于 2013-02-07T06:49:11.710 に答える