Comments (11)
:) Yeah. I'm going to get creative with it. The main thing is providing dynamic return types for services. Which requires knowing where Drupal is so extensions can be discovered. Not a hard problem. Just picking the less hacky option out of the choices
from phpstan-drupal.
CompilerExtension - will PHPStan provide any way to integration with the container? Otherwise the bootstrap or autoload files have no way of interacting with PHPStan -- even if the current setup is a hack.
Global variables -- I'm looking to move from those and should have used %currentWorkingDirectory%
, but "it worked" when first starting :)
from phpstan-drupal.
What exactly are you doing in the CompilerExtension? If you just need to run some code, you can create a file and put it to autoload_files
in extension.neon
.
from phpstan-drupal.
Drupal doesn't have all of its classes dumped to the autoloader. We need to find the Drupal root and then do namespace processing. For this I need to know the current working directory, and autoload_files
nor bootstrap
have access to the container to know those params without globals.
Basically the extension, right now, uses that info and pumps data into globals for use later.
from phpstan-drupal.
I see :) I'll try to come up with a solution.
from phpstan-drupal.
I'll see what I can do, as well. Now that I have PHPUnit tests it's a lot less... magical of an integration.
from phpstan-drupal.
Hi, this should help you to move the logic into autoload_files:
(You should not override bootstrap, that's for the root project that uses PHPStan.)
from phpstan-drupal.
I just released 0.11.6 with this change, so you can change your code and start requiring this version :)
from phpstan-drupal.
This helped remove some of the magical globals.
However, it cannot be fully used. Parameters need to be added to the container for service detection. Opened an initial branch and experimenting.
from phpstan-drupal.
from phpstan-drupal.
0.12 forced the fixes :)
from phpstan-drupal.
Related Issues (20)
- ModuleHandler->loadInclude() call is not being processed HOT 2
- Update `bleedingEdge.neon` to include new rules
- Support turning off @internal check HOT 2
- New accessibility requirement requires title attributes for most form elements.
- Validate FormBuilderInterface::getForm() arguments by inspecting form class HOT 1
- New rule for checking "static create()" method in controller
- Register dynamic services from DrupalKernel::attachSynthetic
- Determine return value from `\Drupal\Core\Config\Config::get` HOT 3
- Warn about max-age less then 10
- Fatal error: Uncaught TypeError: is_link(): Argument #1 ($filename) must be of type string, Drush\Config\Environment given in /tmp/site/vendor/webflo/drupal-finder/src/DrupalFinder.php:153 HOT 22
- Stop testing PHP 7.4, 8.0 and Drupal 9 HOT 4
- Method XY has parameter $yz with generic interface Drupal\Core\Field\FieldItemListInterface but does not specify its types: T
- Detect contructor change for ConfigFormBase HOT 2
- Make opting into loading API files more granular to support finding deprecated hooks from Drupal core more easily HOT 4
- Drupal multisite compatibility. HOT 1
- Add error identifiers to phpstan-drupal rules.
- $defaultTheme being set via a Trait is not discovered.
- Support for deprecated preprocess variables HOT 1
- InstallerExistingConfigTestBase is going to be deprecated HOT 4
- Add @mixin to FieldItemListInterface to explain that properties of its first item are being forwarded HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from phpstan-drupal.