CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p...

40
1.1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE Composer -> Packagist -> Contao Manager Glen Langer Contao Stammtisch Berlin (09.07.2017) Version: 1.2.0 vom 23.08.2017 Slides erstellt mit der Erweiterung "contao-reveal-js-theme" von BugBuster

Transcript of CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p...

Page 1: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

1 . 1

CONTAO 3 ERWEITERUNG NACHCONTAO 4 BUNDLE

Composer -> Packagist -> Contao ManagerGlen Langer

Contao Stammtisch Berlin (09.07.2017)

Version: 1.2.0 vom 23.08.2017

Slides erstellt mit der Erweiterung "contao-reveal-js-theme" von BugBuster

Page 2: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

2 . 1

QuellenOnline Doku von Contao / Quellcode ContaoErfahrung durch Ausprobieren

 

Lizenz

Dieses Werk ist lizenziert unter einer

.

Creative CommonsNamensnennung - Weitergabe unter gleichen Bedingungen 3.0

Deutschland Lizenz

Page 3: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

3 . 1

ÜBER MICHContao seit 2.5.8PHP ZCEForum: BugBusterhttp://contao.ninja/

Page 4: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

4 . 1

WORUM GEHT ES?Composer Konzept, Grundlage für:

Contao 3 Erweiterung kompatibel für Contao 4 (nur kurz und warum wir das nicht wollen sollen)

Contao 3 Erweiterung nach Contao 4 Bundle

Praxis, BackupDB Bundle

Page 5: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

5 . 1

COMPOSER KONZEPTNamespace: Vendor\ErweiterungsnameAutoloadingAbhängigkeitenVersion (Tag, Semantische Versionierung) => Branch VersionInstallationsziel der Erweiterung durch Composer

Page 6: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

5 . 2

Semantische VersionierungBeginnend mit Contao 4 wird die verwendet. Das ist auch bei Erweiterungen sehr wichtig.

semantische Versionierung

4 . 0 . 0 - RC1 Major Minor Bugfix Pre-Release

RegelnBug�x-Releases dürfen nur rückwärts kompatible FixesenthaltenMinor-Releases können rückwärts kompatible neue FeaturesenthaltenJede inkompatible API-Änderung muss als neue Major-Versionveröffentlicht werden

Page 7: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

5 . 3

Semantische VersionierungAPI-Änderungen

Nicht jede rückwärts inkompatible Änderung ist auch eine API-Änderung!

APIAls "public" oder "protected" deklarierte Methoden in PHP-KlassenAusgenommen Methoden, die als @internal gekennzeichnetsind

Templates sind explizit nicht Teil der API und können sich daherauch in Minor- oder Bug�x-Versionen ändern, selbst wenndadurch Stylesheet-Anpassungen notwendig werden.

Page 8: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

6 . 1

GITHUB NAME, PACKAGIST NAMEDie Account Namen und Namen einer Erweiterung bei

GitHub, Packagist und in der composer.json

Page 9: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

6 . 2

Beispiel für easyupdate3GitHub Account: BugBuster1701GitHub URL: .../BugBuster1701/contao-easyupdate3Packagist Account: BugBuster , verbunden mit dem GitHubAccount, dort freigegebencomposer.json Eintrag "name": bugbuster/easyupdate3ergibt: composer require bugbuster/easyupdate3

Achtung: keine Großbuchstaben im composer.json Eintrag"name" verwenden, das akzeptiert Packagist.org nicht!

Page 10: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

7 . 1

TYPE EINER ERWEITERUNGcontao-modulecontao-bundlecontao-componentsymfony-bundle

composer.json Auszug der eigenen Erweiterung:

{ "name":"bugbuster/contao-statistic_group-bundle", "type":"contao-bundle", ...

Page 11: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

8 . 1

VERZEICHNISSTRUKTURContao 3

src/ assets/ config/ classes/ dca/ languages/ de/ en/ models/ modules/ templates/ tests/ composer.json README.md CHANGELOG.md .gitignore

Hier würde der Inhalt von "src" installiert werden nachsystem/modules/erweiterung/

Page 12: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

8 . 2

Contao 4 Standard-Editionsrc/ Resources/ contao/ <-- Bisherige Contao-Dateien config/ classes/ dca/ languages/ de/ en/ models/ modules/ templates/ public/ <-- Öffentliche Ressourcen DemoBundle.php <-- Bundle-Klasse für manuelle Registrierung tests/ composer.json README.md CHANGELOG.md .gitignore

Hier würde "src" installiert werden nachvendor/DeinVendorName/Erweiterungsname/src/

Page 13: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

8 . 3

Contao 4 Managed-Editionsrc/ ContaoManager/ Plugin.php <-- Contao Manager Plugin für automatische Registrierung Resources/ contao/ config/ classes/ dca/ languages/ de/ en/ models/ modules/ templates/ public/ DemoBundle.php tests/ composer.json <-- zusätzlicher Eintrag README.md CHANGELOG.md .gitignore

Hier würde "src" installiert werden nachvendor/DeinVendorName/Erweiterungsname/src/

Page 14: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

8 . 4

Contao 4 Managed-Edition ++src/ ContaoManager/ Plugin.php Controller/ <-- Routing Controller Resources/ config/ routing.yml <-- Routing Definition contao/ config/ classes/ dca/ languages/ de/ en/ models/ modules/ templates/ public/ DemoBundle.php tests/ composer.json README.md CHANGELOG.md .gitignore

Hier würde "src" installiert werden nachvendor/DeinVendorName/Erweiterungsname/src/

Page 15: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

9 . 1

ERWEITERUNG FÜR CONTAO 3 UND 4composer.json deiner Erweiterung nur Contao 3, Auszug

"require": { "contao/core": ">=3.2", "contao-community-alliance/composer-plugin": "*" },

wird nun zu:

Page 16: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

9 . 2

ERWEITERUNG FÜR CONTAO 3 UND 4composer.json deiner Erweiterung Contao 3 und 4, Auszug "require": { "contao/core-bundle":"~3.2 || ~4.2", "contao-community-alliance/composer-plugin":"~2.4 || ~3.0" },

Page 17: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

10 . 1

ERWEITERUNG NUR FÜR CONTAO 4composer.json deiner Erweiterung nur Contao 4, Auszug

"require": { "php": ">=5.6.0", "contao/core-bundle":"~4.4" },

PHP ab 5.6.0, Contao ab 4.4.0 und <5.0.0. Da "composer-plugin"hier nicht mehr angegeben, vom type: contao-bundle, auch wenn

das hier nicht steht.

Page 18: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

10 . 2

Contao 3 Erweiterung als Contao 4 Bundleumbauen

Änderungen außer an composer.json

verschieben der Dateien in neue DateistrukturAnpassungen von wenigen vorhandene DateienNeue Klasse je für Standard und Managed Edition

Page 19: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

11 . 1

ANPASSUNG AUTOLOAD(ER)autoload.php: löschen, Ersatz: composer.jsonautoload.ini: löschen, Ersatz: Contao Manager Plugin bzw. Handarbeit bei Standard Edition

Page 20: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

11 . 2

autoload.php Ersatz für KlassenAuszug aus composer.json der eigenen Erweiterung

"autoload": { "psr-4": { "Vendor\\DemoBundle\\": "src/" }, "classmap": [ "src/Resources/contao/" ], "exclude-from-classmap": [ "src/Resources/contao/config/", "src/Resources/contao/dca/", "src/Resources/contao/languages/", "src/Resources/contao/templates/" ] },

Hier: "psr-4" für die neuen Symfony Klassen, "classmap" für diealten Contao Klassen.

Page 21: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

11 . 3

autoload.ini ErsatzAngabe der Ladereihenfolge über requires in der autoload.ini,"default" war:requires[] = "core"

Standard Edition über Eintragungen in der AppKernel.php.Managed Edition über Manager Plugin, mittels De�nition(en).

Auszug daraus, die Erläuterung zum Plugin selbst folgt:... ->setLoadAfter(['Contao\CoreBundle\ContaoCoreBundle']) ...

Auch hier die Default Angabe, nach dem Contao Core (Bundle).

Page 22: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

11 . 4

Und die Template Pfadangaben?Durch die Dateistruktur:

Resources/contao/templates

werden Templates vom Contao Core dort gesucht und gefunden.

Page 23: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

12 . 1

Anpassung config.phpAngaben zu Klassen absolut angeben

$GLOBALS['FE_MOD']['miscellaneous']['demo'] = 'Demo\Module';

nun:

$GLOBALS['FE_MOD']['miscellaneous']['demo'] = 'Vendor\Demo\Module';

Page 24: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

12 . 2

Anpassung config.phpAngaben CSS/JS/Bilder aus dem public Verzeichnis

$GLOBALS['BE_MOD']['content']['demo'] = array ( 'tables' => array('tl_demo'), 'stylesheet' => 'bundles/vendordemo/meine.css' );

Name der Bundle-Klasse "VendorDemoBundle" de�niert denVerzeichnisname.Name ohne "Bundle" , Rest in Kleinbuchstaben.Pfad unterhalb von web/http://domain.de/bundles/vendordemo/meine.css

Page 25: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

13 . 1

Neue Klasse für Standard EditionBundle Klasse für "Vendor\DemoBundle": src/VendorDemoBundle.php

<?php namespace Vendor\DemoBundle; use Symfony\Component\HttpKernel\Bundle\Bundle; class VendorDemoBundle extends Bundle { }

Page 26: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

13 . 2

Bundle Klasse registrierenEinfügen in app/AppKernel.php folgende Zeile am Ende des Array

$bundles:

new Vendor\DemoBundle\VendorDemoBundle(),

Cache leeren, neu anlegen lassen

bin/console cache:clear --env=prod --no-warmup bin/console cache:warmup --env=prod

Aufruf https://deinedomain/contao/install Datenbank Update durchführen

Page 27: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

14 . 1

Neue Klasse für Managed EditionPlugin Klasse für den Contao Manager, Variante 1: src/ContaoManager/Plugin.php

<?php namespace Vendor\DemoBundle\ContaoManager; use Contao\ManagerPlugin\Bundle\Config\BundleConfig; use Contao\ManagerPlugin\Bundle\BundlePluginInterface; use Contao\ManagerPlugin\Bundle\Parser\ParserInterface; class Plugin implements BundlePluginInterface { public function getBundles(ParserInterface $parser) { return [ BundleConfig::create('Vendor\DemoBundle\VendorDemoBundle') ->setLoadAfter(['Contao\CoreBundle\ContaoCoreBundle']) ->setReplace(['demo']), ]; } }

Page 28: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

14 . 2

Neue Klasse für Managed EditionPlugin Klasse für den Contao Manager, Variante 2:

<?php namespace Vendor\DemoBundle\ContaoManager; use Contao\ManagerPlugin\Bundle\Config\BundleConfig; use Contao\ManagerPlugin\Bundle\BundlePluginInterface; use Contao\ManagerPlugin\Bundle\Parser\ParserInterface; use Vendor\DemoBundle\VendorDemoBundle; use Contao\CoreBundle\ContaoCoreBundle; class Plugin implements BundlePluginInterface { public function getBundles(ParserInterface $parser) { return [ BundleConfig::create(VendorDemoBundle::class) ->setLoadAfter([ContaoCoreBundle::class]) ->setReplace(['demo']) ]; } }

Page 29: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

14 . 3

Bundle Klasse registrierenAuszug composer.json, eigene Erweiterung, Autoload und Plugin:

"autoload":{ "psr-4": { "Vendor\\DemoBundle\\": "src/" } }, "extra":{ "contao-manager-plugin": "Vendor\\DemoBundle\\ContaoManager\\Plugin" }

Page 30: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

15 . 1

PRAXISBeispiele anschauen,

Vergleich: (Contao 3) mit

(Contao 4 Bundle)contao_xingcontao-xing-bundle

Routing: Visitors mit FE und BE Route contao-visitors-bundle

Page 31: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

16 . 1

UMBAU BACKUPDBAus Zeitgründen erfolgte der Umbau durch einen Pull-Requesteiner vorbereiteten Version.

Page 32: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

17 . 1

Tipp: Installation direkt von GitHubBei Neuentwicklung, wenn kein Sync zu Packagist, Installationdirekt von GitHub. Dazu in composer.json der Contao Installationeinfügen:

"repositories": [ { "type": "vcs", "url": "https://github.com/VendorName/demo-bundle" } ], "require": { "vendor/demo-bundle": "dev-develop" },

Bedeutet: Installation der Erweiterung "vendor/demo-bundle", des GitHub Users VendorName, desssen Repository "demo-bundle", aus dem Branch "develop".

Page 33: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

17 . 2

Tipp: Installation direkt von FestplatteBei Neuentwicklung, bei keiner Nutzung von GitHub, incomposer.json der Contao Installation einfügen:

"repositories": [ { "type": "path", "url": "../../contao_entwicklung/demo-bundle" } ], "require": { "vendor/demo-bundle": "*" },

Bedeutet: Installation der Erweiterung "vendor/demo-bundle",Source ist der relativer Pfad aus Sicht der Contao composer.json.Composer legt wenn möglich Symlinks dabei an, wenn man dasnicht will, nach der "url" Zeile einfügen:

...demo-bundle", "options": { "symlink": false }

Page 34: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

18 . 1

EXTENSION FROM SCRATCHAlternative zur schrittweisen Umwandlung:

komplett neu direkt als Symfony Bundle

Quellen dazu: 

(Video) Contao Nordtag 2017, Christian Schif�er

Extension from scratch in Contao 4

 

Page 35: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

19 . 1

FRAGEN?PSR Autoloading?

Tilde ~ und Caret ^ bei Versionsangaben?

Angabe "::class"?

Page 36: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

19 . 2

PHP Standards Recommendationshttp://www.php-�g.org/

PSR-0: alter Autoloading Standard, deprecated

PSR-4: erweiterter Autoloading Standard

Beispiel:

Class.php mit "namespace Vendor\Demo\test;":

psr-0: { "Vendor\\Demo" : src/" } :           src/Vendor/Name/test/Class.php

psr-4: { "Vendor\\Demo" : src/" } :           src/test/Class.php

Page 37: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

19 . 3

Tilde and caret version constraints in ComposerTilde (~)

bedeutet >=4.1.3,<4.2.0, bedeutet >=4.1.0,<5.0.0 (oft genutzt), bedeutet >=0.4.0,<1.0.0,

bedeutet >=4.0.0,<5.0.0.

~4.1.3~4.1~0.4~4

 

Page 38: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

19 . 4

Tilde and caret version constraints in ComposerCaret (^)

bedeutet >=4.1.3,<5.0.0, (oft genutzt) bedeutet >=4.1.0,<5.0.0, genauso wie ~4.1 aber: bedeutet >=0.4.0,<0.5.0, unterschiedlich zu ~0.4

nützlich für abwärtskompatiblen Bereich bedeutet >=4.0.0,<5.0.0 genauso wie ~4 und 4.*

^4.1.3^4.1^0.4

^4

 

Page 39: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

19 . 5

Class name resolution via ::classClassName::class - vollständig quali�zierter Namen der KlasseClassName. Beispiel:

<?php namespace Name\Space; class ClassName {} echo ClassName::class;

Ausgabe:Name\Space\ClassName

Page 40: CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE · 1 . 1 CONTAO 3 ERWEITERUNG NACH CONTAO 4 BUNDLE C om p os er - > P a c k a g ist - > C onta o M ana ger Glen Langer Contao Stammtisch

20 . 1

HAPPY CODING!

 

Aktuelle Version dieser Folien auf: docs.contao.ninja

(auch als PDF und später auch als Video)