2016-04-05 11 views
1

Ich habe eine Datei mit einigen Funktionen (Polyfills für einige Erweiterungen) ohne Namespace, die geladen und global zugänglich sein sollte.Symfony - laden benutzerdefinierte globale Funktionen

Frage ist, wo diese Datei (jetzt in "/ src/AppBundle" dir) und wie man es in Symfony laden? Vielleicht eine Best Practice oder so.

Datei exmaple:

<?php 

// functions.php 

define('CONSTANT_NAME', 'constant_value'); 

function doSomething() 
{ 
} 

Aktualisiert: auch einige Funktionen geladen werden soll (in einer separaten Datei) nur in "dev" -Umgebung. Vielleicht "include_once" in app_dev.php hinzufügen?

Antwort

2

Ich würde es in /src Ordner setzen, vielleicht /src/functions.php - Sie können nach Ihren Vorlieben entscheiden. Um es zu laden, können Sie Ihre composer.json ändern und files zu Ihrer autoload Konfiguration hinzufügen, dann führen Sie composer update. So

"autoload": { 
    "files": ["src/functions.php"] 
} 

dass functions.php auf jede Anforderung erforderlich.

+0

Vielen Dank. Können Sie eine Lösung für Fälle vorschlagen, in denen diese Funktionen nur für die "Entwicklungsumgebung" benötigt werden? Setzen Sie "include_once" in "web/app_dev.php" oder eine "intelligentere" Lösung? – Alex

+0

Ich denke, dass es in 'web/app_dev.php' erforderlich ist gut genug - 'require (__ DIR __. '/ ../src/yourfile.php');' - Sie können es auch in Ihre ['App/AppKernel .php'] (https://github.com/symfony/symfony-standard/blob/master/app/AppKernel.php#L21), aber es ist nur eine Vorliebe – Federkun

+0

@alex, wenn Sie eine wiederverwendbare Lösung möchten, können Sie Erstellen Sie auch ein Bundle, das nur auf 'dev' env aktiviert ist, und fügen Sie Ihre Dateien in Ihre' Bundle' Klasse ein. Beispiel: 'class MyBundle extends Bundle {öffentliche Funktion boot() {// include here}}' – Federkun