Comments (5)
Since PHP 7 is no longer supported, I don't want to add support for it which would complicate the code.
I think it will be sufficient to remove the commas with a regular expression, something like preg_replace('~,(\n\t*\))~', '$1', $s)
from php-generator.
But please do it in your own Printer, I don't want to merge this into the code, because PHP 7 is outdated.
from php-generator.
Added a flag in Printer.
But the other case is when parameters are printed within a function call:
$method = new \Nette\PhpGenerator\Method('foo');
$method->addBody('return bar(...?);', [[
'1234567890-1234567890-1234567890-1234567890',
'1234567890-1234567890-1234567890-1234567890',
'1234567890-1234567890-1234567890-1234567890',
]]);
$printer = new \Nette\PhpGenerator\Printer();
echo $printer->printMethod($method);
Output:
function foo()
{
return bar(
'1234567890-1234567890-1234567890-1234567890',
'1234567890-1234567890-1234567890-1234567890',
'1234567890-1234567890-1234567890-1234567890',
);
}
This output is done by Dumper (Dumper::dumpArguments
). Sure we can pass the flag from Printer to Dumper as done with indentation
and wrapLength
properties. But, as I see, it's not always being passed. Like in FunctionLike::addBody
there's just a new instance of Dumper created without configuration.
Not sure what's the best way to deal with that without global refactoring. Any ideas besides implementing some kind of DumperFactory stuff?
from php-generator.
I just noticed that rendered bodies are passed through Printer::indent, where it converts the indentation where needed.
Putting said preg_replace there as the most non-invasive fix.
from php-generator.
Issues like this (remove or add the comma) may be solved by an additional call of tools like "PHP Coding Standards Fixer" which changes code style, imho.
from php-generator.
Related Issues (20)
- class names resolving in use as
- Inline comment of constant lost HOT 1
- Automatically build nested attributes from object HOT 2
- Methods with one parameter are printed as multiline if promoted or with attribute HOT 1
- ClassType->getNamespace() should not be deprecated HOT 5
- Using comment before for parameter throws exception HOT 2
- Leading slash in alias use at class line HOT 2
- Nullable union type HOT 1
- Attributes cant have 0 as parameter HOT 1
- Extract fails on array properties with class constant keys
- Breaking change within minor version bump RE: namespaces HOT 7
- Printing empty namespace HOT 5
- Option to force keys on arrays in properties HOT 3
- PhpParser\Lexer\Emulative::__construct(): Argument #1 ($phpVersion) must be of type ?PhpParser\PhpVersion, array given HOT 2
- Heredoc and Nowdoc converted to inline string when parsed HOT 4
- Option to set or overwrite a method. HOT 2
- The parameter and property types are not correctly returned when they are nullable HOT 7
- Support for PER Coding Style 2.0 HOT 2
- Promoted Parameters don't have "readonly" when using Factory HOT 1
- Add support for "Roave/BetterReflection" HOT 2
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 php-generator.