Detector::Php::Phalcon
Constants
Every reference below is namespace-qualified under Phalcon\, which
no other PHP framework in this detector set spells. Unlike Laminas'
detector (which has to avoid the generic word "Zend"), a plain
substring match on the namespace is safe here.
Phalcon ships as a compiled C extension (pecl install phalcon, or a
prebuilt .so/.dll), not a Composer dependency — there is no
phalcon/cphalcon package on Packagist for composer.json to name.
Real apps still declare the dependency in Composer via the standard
ext-* platform-package convention, and the community ships a
handful of auxiliary Composer packages alongside the extension:
IDE stubs (editor autocompletion against the compiled extension),
the incubator (community add-ons), devtools (code generators/CLI)
and migrations.
extension=phalcon (optionally phalcon.so / phalcon.dll) enabling
the compiled extension in php.ini — the way most real deployments
actually declare this dependency, since Composer has no package for
the extension itself.
Class methods
The tech name without needing an instance, so the registry can be read off the classes themselves rather than from a parallel list.
Instance methods
Cheap filename-only filter the detector pass uses to skip
detect on files the detector cannot possibly match. The
default true preserves prior behavior (every detector runs on
every file). Override with the same predicate the body of
detect starts with — e.g., filename.ends_with?(".py") for a
Python framework detector — so the detector loop avoids the
detect dispatch on files outside the detector's language.
On large codebases (saleor's 4255 .py files) this lifts ~100
virtual detect calls per file out of the hot loop because
most detectors' inner first-line is exactly this kind of cheap
filename check.