PHP Support in Maguyva: Long-Lived Web Apps Without Blind Edits
Relevant when a PHP codebase is still shipping revenue but nobody wants an agent freelancing through it.
Extensions
.php, .php3, .php4, .php5, +2 more
Maguyva parses Ruby with AST, symbol, and graph support, so AI agents can follow classes, modules, singleton methods, and constructors in Rails and Ruby codebases.
Ruby leans on convention and metaprogramming. Methods are generated by attr_accessor, classes reopen in other files, and namespaces nest several modules deep. The readable surface hides which method a call actually reaches, and blunt text search returns every call and perform in the app.
Maguyva gives an agent classes, modules, methods, and their callers as structure, so it can follow a change through the app instead of guessing.
Maguyva covers .rb, .rbw, .rake, and .gemspec files, plus Gemfile and Rakefile. Instance methods and singleton methods (def self.call) are extracted, with singleton methods marked as static. attr_reader, attr_writer, and attr_accessor declarations count as accessor methods, and symbols are qualified by their module and class namespace.
ClassName.new and Namespace::ClassName.new count as instantiation, and receiver typing follows local assignments and @instance_variables, so a call on an assigned object can resolve to its class. The graph also records inheritance, module inclusion, overrides, raise and rescue edges, and reads and writes.
Metaprogramming calls (define_method, send, method_missing, class_eval, and similar), Sorbet T:: type helpers, and common enumerable calls (each, collect, reject, and similar) are filtered from relationships so application code stands out.
Billing::ChargeCustomer.call, and from which jobs and controllers?” (find_symbol, then dependency_search incoming)ApplicationRecord and include Auditable?” (dependency_search)get_task_context)require and load are ordinary method calls in Ruby, so the imports preset in structural_search selects nothing. Use text_pattern_search to list them.define_method or handled by method_missing are not extracted as symbols, and those calls are filtered as metaprogramming noise.Connect a repository with the quickstart, then check the support matrix on the compatibility page. For other dynamic-language repos, compare the Python guide.
Best fit
Agent workflows
Engine details
Useful MCP entry points
Use it for a namespaced class, module, or method such as `Billing::ChargeCustomer.call`.
Use incoming traversal on a model or service object to see callers and subclasses before a change.
Use it for `require` paths, route strings, and dynamically defined methods that the graph cannot see.
Related guides
Relevant when a PHP codebase is still shipping revenue but nobody wants an agent freelancing through it.
Extensions
.php, .php3, .php4, .php5, +2 more
Useful when Python codebases sprawl across services, scripts, type stubs, and operational glue.
Extensions
.py, .pyi, .pyw