Hm, yes and no, but mostly no.
Here's one grain of truth for this line-of-thought - e.g. in the past, the Facebook/HHVM/Hack folks talked about how PHP 5.x was difficult to parse because it didn't have a good *spec*, and so there would be some wonky/ill-considered edge-cases in the spec (such as it was). If you don't have a good spec, then the only way to address ambiguities is to poke and prod at the canonical implementation.
It is also true that the `php` runtime gives some parsing functionality like `token_get_all()` - and if you don't want to write or maintain a lexer/parser, then you can re-use the one built-in.
But those aren't computational properties of PHP as a language. They're two sides of the universal "re-write/re-use" trade-off: if you re-write, then you need a good spec. If you re-use, then you need a copy of the thing you're re-using.
However... I think this thread is advancing a stricter argument that *dynamism* prevents parsing. But pretty much every dynamic language is parseable to some degree - even bash and Javascript and LISP. The real question is, "How much useful/actionable information do you get out of the parse-tree?" PHP certainly has abilities like "require $file" or "eval($code)" or "if (...) { class Foo... }" which will frustrate the effort to get useful information. Then again, C/C++ have macros and dynamic linkers; Java has classloaders and reflection APIs; and I can't even count the number of languages with "eval". Dynamism has a role in most ecosystems, and dynamism always creates a blindspot for the tooling.
But... you can still parse all the non-dynamic stuff meaningfully. If the downstream folks are moderately disciplined, and if the IDE/tooling is moderately attentive, then you still get a lot of utility.
Example: in PHP, it's *possible* for a codebase to have 3 files with 3 competing definitions of the same class - with different variants dynamically-loaded based on configuration/environment/input. That's not common, but it can happen, and it is non-determinism from a compiler/metaprogramming/IDE/tooling perspective. Now, an IDE like PhpStorm offers drill-down (click a symbol to open the underlying code). How can it open the right file if there are 3 candidates? Easy work-around: *count* the candidates. If there's only one candidate file (normal case), drill-down on that. If there's 2+, then ask the user which one he wants to see.