Skip to content

Instantly share code, notes, and snippets.

@MacDada
MacDada / ShowBlogPostsController.php
Last active Mar 15, 2021
PHP: Use Case architecture example
View ShowBlogPostsController.php
<?php
class ShowBlogPostsController
{
/**
* @param ShowBlogPostUseCase
**/
private $useCase;
/**
View redirect.php
<?php
// https://www.wykop.pl/wpis/39614135/mirki-chce-przekierowanie-na-wp-jesli-httpacceptla/
// 1. Zawsze porównuj z `===` - w bardzo wyjątkowych przypadkach `==` jest słuszne. Doczytaj sobie w dokumentacji dlaczego.
// 2. Spójność napisów - masz raz tak, raz inaczej, bez reguły. Najlepiej zawsze używaj apostrofów do napisów (`'`), chyba że faktycznie chcesz interpolować zmienne lub mieć znaki nowej linii, itp. (wtedy cudzysłowy `"`).
// 3. Jak kolega wyżej słusznie zauważył, `$_SERVER['HTTP_ACCEPT_LANGUAGE']` może nie istnieć. Powinieneś sprawdzać najpierw czy w ogóle jest wartość (np `isset`em) i uwzględnić ten przypadek.
// 4. Zmienne `$url` są Ci zbędne - wsadzaj wartość bezpośrednio do `wp_redirect`.
// 5. Jak już jesteś na głównej z PL, to przekierowanie zbędne.
// 6. Weź pod uwagę, że klient może przesłać język wielkimi literami.
View phpcs.xml
<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="MyProject">
<description>PSR-2 plus extras</description>
<rule ref="PSR2" />
<!-- Verifies that class members have scope modifiers. -->
<rule ref="Squiz.Scope.MethodScope" />
<!-- Discourages the use of deprecated functions that are kept in PHP
View DoctrinePostRepository.php
<?php
/**
* Simpler version of
* https://github.com/dddinphp/repository-examples/blob/master/src/Infrastructure/Persistence/Doctrine/DoctrinePostRepository.php#L64
*
* Thanks to using inheritance.
*/
namespace Infrastructure\Persistence\Doctrine;
View FooApiClient.php
<?php
// singleton
class FooApiClient
{
private function __construct();
public static function getInstance(): FooApiClient;
public function getBar(): Bar;
View opcja1.php
<?php
// spoko, wiemy co należy przekazać
// ale kiepsko, bo dużo argumentów
function foo($bar1, $bar2, $bar3, $bar4, $bar5) {
}
// kiepsko, bo nie wiemy co dany parametr oznacza
foo('abc', 'def', 'ghj', 'klm', 'zxc');
View FavoriteRepository.php
<?php
use Doctrine\ORM\EntityRepository;
class FooRepository extends EntityRepository
{
public function save(Foo $foo)
{
$em = $this->getEntityManager();
$uof = $em->getUnitOfWork();
View template.twig
{# what is the proper way to escape var in url path in html in twig? #}
{# method A #}
<a href="/foo/{{ bar }}">Link</a>
{# method B #}
<a href="/foo/{{ bar|e('url') }}">Link</a>
{# method C #}
@MacDada
MacDada / ViewItemUseCase.php
Last active Nov 20, 2016
Authorization and Use Cases: option 1: authorization inside Use Case
View ViewItemUseCase.php
<?php
namespace Foo\Bar\Application\UseCase;
use Foo\Bar\Application\AuthorizationChecker;
use Foo\Bar\Domain\ItemRepository;
class ViewItemUseCase
{
/**
View Order.php
<?php
class Order
{
public $user1;
public $user2;
}