MaguyvaのPHP対応: 当てずっぽうの編集をせずに、息の長いWebアプリを扱う
PHPのコードベースが今も収益を生み出している一方で、誰もエージェントに好き勝手させたくないときに関連性があります。
拡張子
.php, .php3, .php4, .php5, ほか2件
Rubyは規約とメタプログラミングに強く依存します。メソッドは attr_accessor によって生成され、クラスはほかのファイルで再オープンされ、名前空間は何層ものモジュールに入れ子になります。読みやすい表面の裏で、呼び出しが実際にどのメソッドに届くのかが隠れ、単純なテキスト検索はアプリ中のすべての call と perform を返してきます。
Maguyvaはクラス、モジュール、メソッド、そしてその呼び出し元を構造としてエージェントに渡すため、推測ではなく、アプリ全体で変更を追いかけられます。
Maguyvaは .rb、.rbw、.rake、.gemspec のファイルに加えて、Gemfile と Rakefile に対応しています。インスタンスメソッドと特異メソッド(def self.call)が抽出され、特異メソッドはstaticとしてマークされます。attr_reader、attr_writer、attr_accessor の宣言はアクセサーメソッドとして扱われ、シンボルはモジュールとクラスの名前空間で修飾されます。
ClassName.new と Namespace::ClassName.new はインスタンス化として扱われ、レシーバーの型付けはローカルの代入と @instance_variables をたどるため、代入されたオブジェクトへの呼び出しをそのクラスに解決できます。グラフには、継承、モジュールのインクルード、オーバーライド、raise と rescue のエッジ、読み取りと書き込みも記録されます。
メタプログラミングの呼び出し(define_method、send、method_missing、class_eval など)、Sorbetの T:: 型ヘルパー、よく使われるEnumerableの呼び出し(each、collect、reject など)は関係性から除外されるため、アプリケーションのコードが際立ちます。
Billing::ChargeCustomer.call を呼び出しているのは誰で、どのジョブやコントローラーからか?」(find_symbol、次に dependency_search の incoming)ApplicationRecord を継承し、Auditable をincludeしているモデルはどれか?」(dependency_search)get_task_context)require と load は通常のメソッド呼び出しなので、structural_search の imports プリセットは何も選択しません。それらを一覧にするには text_pattern_search を使ってください。define_method で実行時に作られたメソッドや method_missing で処理されるメソッドはシンボルとして抽出されず、それらの呼び出しはメタプログラミングのノイズとして除外されます。クイックスタートでリポジトリを接続し、互換性ページで対応マトリクスを確認してください。ほかの動的言語のリポジトリについては、Pythonガイドと比較してください。
最適な用途
エージェントワークフロー
エンジンの詳細
役立つMCPエントリーポイント
`Billing::ChargeCustomer.call` のような、名前空間付きのクラス、モジュール、メソッドに使ってください。
変更前に、モデルやサービスオブジェクトに対してincomingのトラバーサルを使い、呼び出し元とサブクラスを確認してください。
`require` のパス、ルートの文字列、グラフからは見えない動的に定義されたメソッドに使ってください。
関連ガイド
PHPのコードベースが今も収益を生み出している一方で、誰もエージェントに好き勝手させたくないときに関連性があります。
拡張子
.php, .php3, .php4, .php5, ほか2件
Pythonのコードベースがサービス、スクリプト、型スタブ、運用のつなぎコードにまたがって広がっているときに役立ちます。
拡張子
.py, .pyi, .pyw