| Conditions | 1 |
| Paths | 1 |
| Total Lines | 278 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 330 | protected function createConfigController($pluginDir, $code) |
||
| 331 | { |
||
| 332 | $snakecased = Container::underscore($code); |
||
| 333 | |||
| 334 | $source = <<<EOL |
||
| 335 | <?php |
||
| 336 | |||
| 337 | namespace Plugin\\${code}\\Controller\\Admin; |
||
| 338 | |||
| 339 | use Eccube\\Controller\\AbstractController; |
||
| 340 | use Plugin\\${code}\\Form\\Type\\Admin\\ConfigType; |
||
| 341 | use Plugin\\${code}\\Repository\\ConfigRepository; |
||
| 342 | use Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\Template; |
||
| 343 | use Symfony\\Component\\HttpFoundation\\Request; |
||
| 344 | use Symfony\\Component\\Routing\\Annotation\\Route; |
||
| 345 | |||
| 346 | class ConfigController extends AbstractController |
||
| 347 | { |
||
| 348 | /** |
||
| 349 | * @var ConfigRepository |
||
| 350 | */ |
||
| 351 | protected \$configRepository; |
||
| 352 | |||
| 353 | /** |
||
| 354 | * ConfigController constructor. |
||
| 355 | * |
||
| 356 | * @param ConfigRepository \$configRepository |
||
| 357 | */ |
||
| 358 | public function __construct(ConfigRepository \$configRepository) |
||
| 359 | { |
||
| 360 | \$this->configRepository = \$configRepository; |
||
| 361 | } |
||
| 362 | |||
| 363 | /** |
||
| 364 | * @Route("/%eccube_admin_route%/${snakecased}/config", name="${snakecased}_admin_config") |
||
| 365 | * @Template("@${code}/admin/config.twig") |
||
| 366 | */ |
||
| 367 | public function index(Request \$request) |
||
| 368 | { |
||
| 369 | \$Config = \$this->configRepository->get(); |
||
| 370 | \$form = \$this->createForm(ConfigType::class, \$Config); |
||
| 371 | \$form->handleRequest(\$request); |
||
| 372 | |||
| 373 | if (\$form->isSubmitted() && \$form->isValid()) { |
||
| 374 | \$Config = \$form->getData(); |
||
| 375 | \$this->entityManager->persist(\$Config); |
||
| 376 | \$this->entityManager->flush(\$Config); |
||
| 377 | \$this->addSuccess('登録しました。', 'admin'); |
||
| 378 | |||
| 379 | return \$this->redirectToRoute('${snakecased}_admin_config'); |
||
| 380 | } |
||
| 381 | |||
| 382 | return [ |
||
| 383 | 'form' => \$form->createView(), |
||
| 384 | ]; |
||
| 385 | } |
||
| 386 | } |
||
| 387 | |||
| 388 | EOL; |
||
| 389 | |||
| 390 | $this->fs->dumpFile($pluginDir.'/Controller/Admin/ConfigController.php', $source); |
||
| 391 | |||
| 392 | $source = <<<EOL |
||
| 393 | <?php |
||
| 394 | |||
| 395 | namespace Plugin\\${code}\\Entity; |
||
| 396 | |||
| 397 | use Doctrine\\ORM\\Mapping as ORM; |
||
| 398 | |||
| 399 | /** |
||
| 400 | * Config |
||
| 401 | * |
||
| 402 | * @ORM\Table(name="plg_${snakecased}_config") |
||
| 403 | * @ORM\Entity(repositoryClass="Plugin\\${code}\\Repository\\ConfigRepository") |
||
| 404 | */ |
||
| 405 | class Config |
||
| 406 | { |
||
| 407 | /** |
||
| 408 | * @var int |
||
| 409 | * |
||
| 410 | * @ORM\Column(name="id", type="integer", options={"unsigned":true}) |
||
| 411 | * @ORM\Id |
||
| 412 | * @ORM\GeneratedValue(strategy="IDENTITY") |
||
| 413 | */ |
||
| 414 | private \$id; |
||
| 415 | |||
| 416 | /** |
||
| 417 | * @var string |
||
| 418 | * |
||
| 419 | * @ORM\Column(name="name", type="string", length=255) |
||
| 420 | */ |
||
| 421 | private \$name; |
||
| 422 | |||
| 423 | /** |
||
| 424 | * @return int |
||
| 425 | */ |
||
| 426 | public function getId() |
||
| 427 | { |
||
| 428 | return \$this->id; |
||
| 429 | } |
||
| 430 | |||
| 431 | /** |
||
| 432 | * @return string |
||
| 433 | */ |
||
| 434 | public function getName() |
||
| 435 | { |
||
| 436 | return \$this->name; |
||
| 437 | } |
||
| 438 | |||
| 439 | /** |
||
| 440 | * @param string \$name |
||
| 441 | * |
||
| 442 | * @return \$this; |
||
| 443 | */ |
||
| 444 | public function setName(\$name) |
||
| 445 | { |
||
| 446 | \$this->name = \$name; |
||
| 447 | |||
| 448 | return \$this; |
||
| 449 | } |
||
| 450 | } |
||
| 451 | |||
| 452 | EOL; |
||
| 453 | |||
| 454 | $this->fs->dumpFile($pluginDir.'/Entity/Config.php', $source); |
||
| 455 | |||
| 456 | $source = <<<EOL |
||
| 457 | <?php |
||
| 458 | |||
| 459 | namespace Plugin\\${code}\\Repository; |
||
| 460 | |||
| 461 | use Eccube\\Repository\\AbstractRepository; |
||
| 462 | use Plugin\\${code}\\Entity\\Config; |
||
| 463 | use Symfony\\Bridge\\Doctrine\\RegistryInterface; |
||
| 464 | |||
| 465 | /** |
||
| 466 | * ConfigRepository |
||
| 467 | * |
||
| 468 | * This class was generated by the Doctrine ORM. Add your own custom |
||
| 469 | * repository methods below. |
||
| 470 | */ |
||
| 471 | class ConfigRepository extends AbstractRepository |
||
| 472 | { |
||
| 473 | /** |
||
| 474 | * ConfigRepository constructor. |
||
| 475 | * |
||
| 476 | * @param RegistryInterface \$registry |
||
| 477 | */ |
||
| 478 | public function __construct(RegistryInterface \$registry) |
||
| 479 | { |
||
| 480 | parent::__construct(\$registry, Config::class); |
||
| 481 | } |
||
| 482 | |||
| 483 | /** |
||
| 484 | * @param int \$id |
||
| 485 | * |
||
| 486 | * @return null|Config |
||
| 487 | */ |
||
| 488 | public function get(\$id = 1) |
||
| 489 | { |
||
| 490 | return \$this->find(\$id); |
||
| 491 | } |
||
| 492 | } |
||
| 493 | |||
| 494 | EOL; |
||
| 495 | |||
| 496 | $this->fs->dumpFile($pluginDir.'/Repository/ConfigRepository.php', $source); |
||
| 497 | |||
| 498 | $source = <<<EOL |
||
| 499 | <?php |
||
| 500 | |||
| 501 | namespace Plugin\\${code}\\Form\\Type\\Admin; |
||
| 502 | |||
| 503 | use Plugin\\${code}\\Entity\\Config; |
||
| 504 | use Symfony\\Component\\Form\\AbstractType; |
||
| 505 | use Symfony\\Component\\Form\\Extension\\Core\\Type\\TextType; |
||
| 506 | use Symfony\\Component\\Form\\FormBuilderInterface; |
||
| 507 | use Symfony\\Component\\OptionsResolver\\OptionsResolver; |
||
| 508 | use Symfony\Component\Validator\Constraints\Length; |
||
| 509 | use Symfony\Component\Validator\Constraints\NotBlank; |
||
| 510 | |||
| 511 | class ConfigType extends AbstractType |
||
| 512 | { |
||
| 513 | /** |
||
| 514 | * {@inheritdoc} |
||
| 515 | */ |
||
| 516 | public function buildForm(FormBuilderInterface \$builder, array \$options) |
||
| 517 | { |
||
| 518 | \$builder->add('name', TextType::class, [ |
||
| 519 | 'constraints' => [ |
||
| 520 | new NotBlank(), |
||
| 521 | new Length(['max' => 255]), |
||
| 522 | ], |
||
| 523 | ]); |
||
| 524 | } |
||
| 525 | |||
| 526 | /** |
||
| 527 | * {@inheritdoc} |
||
| 528 | */ |
||
| 529 | public function configureOptions(OptionsResolver \$resolver) |
||
| 530 | { |
||
| 531 | \$resolver->setDefaults([ |
||
| 532 | 'data_class' => Config::class, |
||
| 533 | ]); |
||
| 534 | } |
||
| 535 | } |
||
| 536 | |||
| 537 | EOL; |
||
| 538 | |||
| 539 | $this->fs->dumpFile($pluginDir.'/Form/Type/Admin/ConfigType.php', $source); |
||
| 540 | |||
| 541 | $source = <<<EOL |
||
| 542 | {% extends '@admin/default_frame.twig' %} |
||
| 543 | |||
| 544 | {% set menus = ['store', 'plugin', 'plugin_list'] %} |
||
| 545 | |||
| 546 | {% block title %}${code}{% endblock %} |
||
| 547 | {% block sub_title %}プラグイン一覧{% endblock %} |
||
| 548 | |||
| 549 | {% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} |
||
| 550 | |||
| 551 | {% block stylesheet %}{% endblock stylesheet %} |
||
| 552 | |||
| 553 | {% block javascript %}{% endblock javascript %} |
||
| 554 | |||
| 555 | {% block main %} |
||
| 556 | <form role="form" method="post"> |
||
| 557 | |||
| 558 | {{ form_widget(form._token) }} |
||
| 559 | |||
| 560 | <div class="c-contentsArea__cols"> |
||
| 561 | <div class="c-contentsArea__primaryCol"> |
||
| 562 | <div class="c-primaryCol"> |
||
| 563 | <div class="card rounded border-0 mb-4"> |
||
| 564 | <div class="card-header"><span>設定</span></div> |
||
| 565 | <div class="card-body"> |
||
| 566 | <div class="row"> |
||
| 567 | <div class="col-3"><span>名前</span><span |
||
| 568 | class="badge badge-primary ml-1">必須</span></div> |
||
| 569 | <div class="col mb-2"> |
||
| 570 | {{ form_widget(form.name) }} |
||
| 571 | {{ form_errors(form.name) }} |
||
| 572 | </div> |
||
| 573 | </div> |
||
| 574 | </div> |
||
| 575 | </div> |
||
| 576 | </div> |
||
| 577 | </div> |
||
| 578 | </div> |
||
| 579 | <div class="c-conversionArea"> |
||
| 580 | <div class="c-conversionArea__container"> |
||
| 581 | <div class="row justify-content-between align-items-center"> |
||
| 582 | <div class="col-6"> |
||
| 583 | <div class="c-conversionArea__leftBlockItem"> |
||
| 584 | <a class="c-baseLink" |
||
| 585 | href="{{ url('admin_store_plugin') }}"> |
||
| 586 | <i class="fa fa-backward" aria-hidden="true"></i> |
||
| 587 | <span>プラグイン一覧</span> |
||
| 588 | </a> |
||
| 589 | </div> |
||
| 590 | </div> |
||
| 591 | <div class="col-6"> |
||
| 592 | <div class="row align-items-center justify-content-end"> |
||
| 593 | <div class="col-auto"> |
||
| 594 | <button class="btn btn-ec-conversion px-5" |
||
| 595 | type="submit">登録</button> |
||
| 596 | </div> |
||
| 597 | </div> |
||
| 598 | </div> |
||
| 599 | </div> |
||
| 600 | </div> |
||
| 601 | </div> |
||
| 602 | </form> |
||
| 603 | {% endblock %} |
||
| 604 | |||
| 605 | EOL; |
||
| 606 | $this->fs->dumpFile($pluginDir.'/Resource/template/admin/config.twig', $source); |
||
| 607 | } |
||
| 608 | } |
||
| 609 |
PHP Analyzer performs a side-effects analysis of your code. A side-effect is basically anything that might be visible after the scope of the method is left.
Let’s take a look at an example:
If we look at the
getEmail()method, we can see that it has no side-effect. Whether you call this method or not, no future calls to other methods are affected by this. As such code as the following is useless:On the hand, if we look at the
setEmail(), this method _has_ side-effects. In the following case, we could not remove the method call: