2

愚かな質問があります。C# を 2 ~ 3 年使用した後、PHP を学習したいと考えています。

そしてC#のように

public enum SimpleEnum{
   One,
   Two,
   Three
}

public interface ISimple
{
  int Id;
  SimpleEnum SimpleType;
}

私がPHPでやったこと:

final class SimpleEnum {
  const ONE = 1;
  const TWO = 2;
  const THREE = 3;
}

interface ISimple {
  public $value1;

  SimpleEnum $myEnum;
}

しかし、からエラーが発生しSimpleEnumましたISimple

SimpleEnum多分無理ですが、type in interface の使い方を教えてください。

ありがとうございました

4

3 に答える 3

2

Fatal error: Interfaces may not include member variables...そのため、Interfacesにプロパティを含めることはできず、メソッド宣言のみを使用できます。代わりに、それを使用abstract classして拡張できます。

また、PHP には厳密な型制御はありません。したがって、プロパティを宣言する場合は、 init it でpublic $enum = nulland を使用するだけです。__construct()$this->enum = ...;

もう一つ。SimpleEnum正確にプロパティに格納されていることを確認したい場合は、渡された値をクラスプロパティに格納$enumするこのプロパティのセッターを宣言します。setSimpleEnum(SimpleEnum $enum) { ... }を変更したい場所ならどこでも使用できる$enumため、拡張されていないクラスのものを渡すとSimpleEnumFatal. 疑似厳密型制御。

于 2012-10-13T07:10:53.917 に答える
2

不可能ですが、$myEnum を特に SimpleEnum にする必要がある場合は、コントラクト (インターフェイス) でそれを要求するだけです。タイプヒントでこれを行うことができます

interface ISimple {
    public function setMyEnum(SimpleEnum $myEnum);
}
于 2012-10-13T07:24:23.900 に答える
1

Type Jugglingに記載されているとおり:

PHP は、変数宣言で明示的な型定義を必要としません (またはサポートしません)。変数のタイプは、変数が使用されるコンテキストによって決まります。

于 2012-10-13T07:08:20.247 に答える