2017-01-10 6 views
1

ハックタイプエイリアスを自動ロードする方法はありますか?私はそれらをPSR-4に準拠したパス上の別々のファイルに置きました。私はそれらがHack-onlyであり、PSR-0またはPSR-4で形式的に言及されていないと理解していますが、ハッキングタイプエイリアスの自動ロード

  1. HHVMは、その基本型に型の別名を拡大する、または
  2. spl_autoloadは、クラス、関数またはインターフェイス名などの種類を扱い、エイリアスを解決し、スクリプトを実行します。

ただし、どちらも発生しません。実行時には、方法はすなわち、原因タイプヒントと互換性がないため、失敗呼び出す:

Catchable fatal error: Argument passed to {method_name} must be an instance of {type_alias}, {concrete_type} given.

編集:私は、具体的作曲を使用していますことを言及する必要があります。これが作曲家特有のものかどうかは分かりません。

答えて

2

はい、HHVMでタイプを自動読み込みできます。クラスマップアプローチとHH\autoload_set_paths関数を使用する必要があります。

作者に必要な地図を生成するためのサポートを追加するhhvm-autoloadパッケージがあります。

+0

私は楽しく訂正します! – concat

0

私はこれが可能ではないと思います。 PHPは自動ロードのための型ヒントを登録しません。タイプヒントを実現する唯一の方法は、そのクラスまたはサブクラスを渡すことです。そのクラスまたはオートクローダー呼び出しをトリガーしたサブクラスを渡すだけです。通訳者がそれに照らしてチェックするときに、タイプヒントが未知であることは不可能です。

これは、タイプエイリアスがこの可能性を導入するため、ハックでのみ問題になります。 PHPとの一貫性を保つために、私は、HHVMがバイトコードをコンパイルする際にタイプエイリアスを展開することが、前述の2つの実行可能な唯一のソリューションであると考えています。

関連する問題