Laravel Pint

Fix your PHP style.

Demo

A demo of how Laravel Pint can fix code style issues.

When you run Laravel Pint, it will scan and fix and code style issues, this could me missing line breaks, wrapping long lines and formatting methods correctly.

It is always a good idea to run a dry run, this lets you see what Pint will change without actually making the change, to do the dry run, use the --test option.

./vendor/bin/pint --test
 
.....⨯⨯...⨯⨯.⨯⨯⨯.⨯.⨯⨯⨯....⨯.⨯..⨯⨯⨯⨯⨯⨯..........⨯..⨯..⨯..⨯..⨯⨯..⨯........
 
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── Laravel
FAIL ............................................................................................................................................................................................ 72 files, 26 style issues
⨯ app/Console/Commands/HighlightCode.php single_quote, concat_space, trailing_comma_in_multiline, phpdoc_separation, not_operator_with_successor_space, blank_line_before_statement
⨯ app/Console/Commands/ServiceChecker.php trailing_comma_in_multiline, blank_line_before_statement
⨯ app/Console/Commands/WorkerChecker.php trailing_comma_in_multiline, blank_line_before_statement
⨯ app/Events/EmojiClicked.php braces_position
⨯ app/Events/ServiceStatusUpdate.php class_attributes_separation, braces_position, no_unused_imports
⨯ app/Events/WorkerStatusUpdate.php class_attributes_separation, braces_position, no_unused_imports
⨯ app/Livewire/Blocks/ServiceStatus.php trailing_comma_in_multiline, braces_position, single_line_empty_body, ordered_imports, binary_operator_spaces
⨯ app/Livewire/Blocks/WorkerStatus.php trailing_comma_in_multiline, braces_position, single_line_empty_body, ordered_imports, binary_operator_spaces
⨯ app/Livewire/Demos/Scout.php trailing_comma_in_multiline
⨯ app/Livewire/Demos/TodoList.php class_attributes_separation, nullable_type_declaration, unary_operator_spaces, not_operator_with_successor_space
⨯ app/Models/LinuxDistro.php class_attributes_separation, trailing_comma_in_multiline
⨯ app/Providers/AppServiceProvider.php no_unused_imports
⨯ app/View/Components/Blocks/CodeSnippet.php braces_position
⨯ app/View/Components/Blocks/Link.php braces_position
⨯ app/View/Components/Blocks/ServiceStatus.php nullable_type_declaration, braces_position
⨯ app/View/Components/Layouts/Html.php concat_space, braces_position, not_operator_with_successor_space
⨯ app/View/Components/Text/Link.php nullable_type_declaration, braces_position
⨯ config/pulse.php single_line_comment_spacing
⨯ config/scout.php array_indentation, binary_operator_spaces
⨯ database/seeders/DatabaseSeeder.php trailing_comma_in_multiline
⨯ database/seeders/LinuxDistroSeeder.php new_with_parentheses, trailing_comma_in_multiline, unary_operator_spaces, no_unused_imports, not_operator_with_successor_space
⨯ resources/code-snippets/raw/demos/echo/EmojiClicked.php braces_position
⨯ resources/code-snippets/raw/demos/scout/LinuxDistro.php class_attributes_separation, trailing_comma_in_multiline
⨯ resources/code-snippets/raw/demos/scout/LinuxDistroSeeder.php new_with_parentheses, trailing_comma_in_multiline, unary_operator_spaces, not_operator_with_successor_space
⨯ resources/code-snippets/raw/demos/scout/Scout.php trailing_comma_in_multiline
⨯ resources/code-snippets/raw/demos/todo/TodoList.php class_attributes_separation, nullable_type_declaration, unary_operator_spaces, not_operator_with_successor_space

If you are happy, you can remove the --test option and run the command again, this will allow Pint to make the required changes to bring the code inline with the defined code style standards.

./vendor/bin/pint
 
.....✓✓...✓✓.✓✓✓.✓.✓✓✓....✓.✓..✓✓✓✓✓✓..........✓..✓..✓..✓..✓✓..✓........
 
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── Laravel
FIXED ..................................................................................................................................................................................... 72 files, 26 style issues fixed
✓ app/Console/Commands/HighlightCode.php single_quote, concat_space, trailing_comma_in_multiline, phpdoc_separation, not_operator_with_successor_space, blank_line_before_statement
✓ app/Console/Commands/ServiceChecker.php trailing_comma_in_multiline, blank_line_before_statement
✓ app/Console/Commands/WorkerChecker.php trailing_comma_in_multiline, blank_line_before_statement
✓ app/Events/EmojiClicked.php braces_position
✓ app/Events/ServiceStatusUpdate.php class_attributes_separation, braces_position, no_unused_imports
✓ app/Events/WorkerStatusUpdate.php class_attributes_separation, braces_position, no_unused_imports
✓ app/Livewire/Blocks/ServiceStatus.php trailing_comma_in_multiline, braces_position, single_line_empty_body, ordered_imports, binary_operator_spaces
✓ app/Livewire/Blocks/WorkerStatus.php trailing_comma_in_multiline, braces_position, single_line_empty_body, ordered_imports, binary_operator_spaces
✓ app/Livewire/Demos/Scout.php trailing_comma_in_multiline
✓ app/Livewire/Demos/TodoList.php class_attributes_separation, nullable_type_declaration, unary_operator_spaces, not_operator_with_successor_space
✓ app/Models/LinuxDistro.php class_attributes_separation, trailing_comma_in_multiline
✓ app/Providers/AppServiceProvider.php no_unused_imports
✓ app/View/Components/Blocks/CodeSnippet.php braces_position
✓ app/View/Components/Blocks/Link.php braces_position
✓ app/View/Components/Blocks/ServiceStatus.php nullable_type_declaration, braces_position
✓ app/View/Components/Layouts/Html.php concat_space, braces_position, not_operator_with_successor_space
✓ app/View/Components/Text/Link.php nullable_type_declaration, braces_position
✓ config/pulse.php single_line_comment_spacing
✓ config/scout.php array_indentation, binary_operator_spaces
✓ database/seeders/DatabaseSeeder.php trailing_comma_in_multiline
✓ database/seeders/LinuxDistroSeeder.php new_with_parentheses, trailing_comma_in_multiline, unary_operator_spaces, no_unused_imports, not_operator_with_successor_space
✓ resources/code-snippets/raw/demos/echo/EmojiClicked.php braces_position
✓ resources/code-snippets/raw/demos/scout/LinuxDistro.php class_attributes_separation, trailing_comma_in_multiline
✓ resources/code-snippets/raw/demos/scout/LinuxDistroSeeder.php new_with_parentheses, trailing_comma_in_multiline, unary_operator_spaces, not_operator_with_successor_space
✓ resources/code-snippets/raw/demos/scout/Scout.php trailing_comma_in_multiline
✓ resources/code-snippets/raw/demos/todo/TodoList.php class_attributes_separation, nullable_type_declaration, unary_operator_spaces, not_operator_with_successor_space

To give you a little example of what Pint just did, here are a few diffs.

// phpdoc_separation
/**
* Execute the console command.
* //
* @throws ConnectionException
* @throws \Throwable
*/
 
// not_operator_with_successor_space
if (!File::exists($directory)) {
if (! File::exists($directory)) {
File::makeDirectory($directory, 0755, true);
}
 
// single_quote, concat_space
$this->info("Highlighted code saved to: " . $renderedPath);
$this->info('Highlighted code saved to: '.$renderedPath);
 
// ordered_imports
use Cache;
use Livewire\Component;
use Livewire\Attributes\On;
use Livewire\Component;
 
// trailing_comma_in_multiline
return view('livewire.blocks.worker-status', [
'workerStatuses' => $data,
'allOnline' => $allOnline
'allOnline' => $allOnline,
]);

Show Your Working

A quick walkthrough of how this works.

My assumptions, at the very least, are that you have Laravel setup and working.

Laravel should include Pint in the default installation these days, but if you don't have it installed you can run the following composer command.

composer require laravel/pint --dev

That's all you really need to do, if you require additional customisation, you can read the documentation linked below.

Resource Links

A few links to supporting resources.