Kategorie: PHP
-
Twig Extension zum Sortieren von Entitäten per Datetime Property
Wenn man im Template eine Doctrine Collection sortieren will nach einem Zeitstempel (createdAt in dem Beispiel), sollte man dies eigentlich vorher machen. Wenn dies nicht möglich ist, z.B. im Sonata Admin Bundle, dann kann man diese Twig Extension verwenden: {% foo| sortByCreatedAt(‚asc‘) %} Twig Extension Code: <?php namespace App\Twig; use App\Entity\Tag; use Doctrine\ORM\PersistentCollection; use Twig\Extension\AbstractExtension;…
-
Strato und MySQL: General error: 1709 Index column size too large. The maximum column size is 767 bytes.
Bei einem Kunden wurde mir folgende Fehlermeldung angezeigt, wenn ich versucht habe über Symfony die Datenbank erstellen zu lassen: General error: 1709 Index column size too large. The maximum column size is 767 bytes. Dies liegt daran, das Strato so komische Einstellung bei ihren Managed Hosting Packete wie z.B. das STRATO PowerWeb hat. Strato wird…
-
Symfony Security Passwörter hashen mit dem PasswordEncoder
Der PasswordEncoder des Symfony Frameworks ist sehr gut geeignet auch in Zukunft sichere Hashes von Passwörtern in der Datenbank zu speichern und zentral zu konfigurieren. Das SecurityBundle muss ggf. nachinstalliert werden: composer require symfony/security-bundle Man legt dazu in der security.yaml fest, welchen Hashing Algorithmus man verwenden will für welche Entität: security: encoders: App\Entity\User: bcrypt Die…
-
Zertifizierung zum Zend Certified Engineer erfolgreich bestanden
Am 1. März habe ich die Prüfung erfolgreich abgelegt für die ich die letzten Monate gelernt habe. Wie zu erwarten war, waren die Fragen sehr, sehr kniffelig, aber die Vorbereitung hat sich bezahlt gemacht. Vorbereitung Ich kann jedem empfehlen sich vorher merhmals das Buch PHP7 Zend Certification Study Guide durchzulesen: Außerdem sollte man alle Tests auf…
-
PHPUnit returnCallback Beispiel
Mit dem PHPUnit returnCallback() Methode kann man dynamisch den Rückgabewert eines Mocks definieren. Beispiel: public function testCallback() { $globalObject = []; $this->mock ->expects($this->any()) ->method(‚method‘) ->will( $this->returnCallback( function($param) use ($globalObject) { return globalObject; } ) ); }
-
Travis CI: No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)
Bei der sehr kryptischen Fehlermeldung in Travis CI: No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb) handlet es sich um ein Problem mit falschen Einrückungen im travis.yml File: matrix: include: – php: 5.6 env: – SYMFONY_VERSION=’3.4.*‘ Ein Leerzeichen zu wenig in der Zeile – SYMFONY_VERSION=’3.4.*‘ und es kommt zu diesem wenig aufschlussreichen Fehler.
-
PHP: Parse Error: syntax error, unexpected ‚:‘, expecting ‚;‘ or ‚{‚
Bei der sehr kryptischen Fehlermeldung Parse Error: syntax error, unexpected ‚:‘, expecting ‚;‘ or ‚{‚ handelt es sich in den meisten Fällen um eine PHP7 Inkompatibilität. Der auszuführende Code enthält ein Sprach-Feature, was erst unter PHP7 verfügbar ist: Return Type Definitions (Definition des Rückgabewertes). Beispiel: function myFuntion($input): array { return [‚foo‘]; } Damit kann man festelegen,…
-
PHP Unit Testing Präsentation
Diese Präsentation habe ich im Rahmen meiner Arbeit bei Air Berlin zum Thema Unit und Integration Testing gehalten. Da es Air Berlin nun nicht mehr gibt, stelle ich gern diese Informationen allen zur Verfügung. Download Testing Powerpoint Präsentation
-
PHPLdap Extension installieren unter Linux
Um die Ldap PHP Extension zu installieren, kann man unter Linux / Ubuntu einfach den Befehl: sudo apt-get install php-ldap
-
Symfony 3 Test-Datenbank einrichten für Integration Tests
In Symofny wird automatisch beim Ausführen von Tests die app/config/parameters_test.yml geladen. Dort sollte dann eine andere Datenbank angegeben werden, der Einfachheit halber mit demselben Datenbank User: database_host: same_as_dev database_port: same_as_dev database_name: test_db database_user: same_as_dev database_password: same_as_dev Dann müssen auf der Konsole folgende Befehle ausgeführt werden: Cache leeren: php bin/console cache:clear –env=test Datenbank erstellen php bin/console…