Config Namespace <=> Context

Im Entwickler-Forum können Implementierungsdetails sowie Alternativen der Umsetzung diskutiert werden. // Here, developers can discuss implementation details of features of their projects.
Antworten
GeneralCrime
Beiträge: 91
Registriert: 14.12.2011, 07:13:16
Kontaktdaten:

Config Namespace <=> Context

Beitrag von GeneralCrime » 08.06.2013, 16:05:32

Hallo nach langem mal wieder eine Idee von mir.

Zu beginn meiner APF Zeit habe ich als ersten den ConfigManager umgeschrieben. Ich habe hierbei die das Verzeichnis

von
config/namespace/context/

nach
config/context/namespace/

geändert.

Der Grund liegt auf der Hand es ist wesentlich einfacher beim kopieren der Daten vom Testsystem zum Livesystem da alles in einem Verzeichnis liegt.
Je größer das Projekt wird und umso mehr Module eine rolle spielen umso großer wird der Aufwand.

Man könnte dies ja als Konfigurationsoption gerne auch aktivieren bzw deaktivieren.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4606
Registriert: 04.11.2007, 16:13:53

Re: Config Namespace <=> Context

Beitrag von dr.e. » 08.06.2013, 16:17:31

Hi,

soweit ich mich erinnern kann, hatte Lutz etwas ähnliches gebaut - auf Basis des ConfigurationProvider-Interfaces. Wenn du magst, reiche doch einen Code-Vorschlag im Tracker ein, dann können wir das für zukünftige Versionen überlegen zu übernehmen.
Viele Grüße,
Christian

Benutzeravatar
MrNiceGuy
Beiträge: 749
Registriert: 03.02.2009, 16:49:42
Wohnort: Nienburg / Weser

Re: Config Namespace <=> Context

Beitrag von MrNiceGuy » 14.06.2013, 13:05:05

Da erinnerst du dich richtig, Christian. Ich habe damals auch eine Diskussion angestoßen, ob ich der Einzige sei, der das so sieht. Wie ich das gelöst habe müsste ich erstmal nachschauen, das ist schon etwas länger her... Aber seit Version 1.15 oder so (genau weiß ich das garnicht mehr) hatte sich die Situation ja deutlich verbessert, weil da ja die Möglichkeit gegeben war ohne Rumpfuschen in den Core-Scripten diesen Umbau vorzunehmen.
There are only 10 Types of people in the world:
Those who understand binary and those who don't.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4606
Registriert: 04.11.2007, 16:13:53

Re: Config Namespace <=> Context

Beitrag von dr.e. » 14.06.2013, 22:18:39

Vielleicht kannst du ja wenn du möchtest mal den Code posten, das hilft GeneralCrime sicher.
Viele Grüße,
Christian

Benutzeravatar
MrNiceGuy
Beiträge: 749
Registriert: 03.02.2009, 16:49:42
Wohnort: Nienburg / Weser

Re: Config Namespace <=> Context

Beitrag von MrNiceGuy » 17.06.2013, 15:45:45

Das hatte ich schon vor, bin bisher nur noch nicht dazu gekommen ;)

So sieht mein Provider aus:

Code: Alles auswählen

<?php
import
  ( 'core::configuration::provider::ini',
    'IniConfigurationProvider'
   );
import
  ( 'core::configuration::provider::ini',
    'IniConfiguration'
   );

class MyIniConfigurationProvider extends IniConfigurationProvider
{
  protected $sConfigPath = '/config';

  protected function getFilePath
    ( $sNamespace,
      $sContext,
      $sLanguage,
      $sEnvironment,
      $sName
     )
  {
    // fallback for missing file extensions (backward compatibility for pre-1.13 config files)
    if (preg_match
          ( '/\.'.$this->extension.'$/i',
            $sName
           ) != 1
        )
    {
      $sName = $sName.'.'.$this->extension;
    }

    // assemble the context
    if ($this->omitContext === TRUE
    OR  $sContext          === NULL
        )
    {
      $sContextPath = '';
    }
    else
    {
      $sContextPath = '/'.str_replace
        ( '::',
          '/',
          $sContext
         );
    }

    // assemble file name
    if ($this->omitEnvironment === TRUE
    OR  $sEnvironment          === NULL
        )
    {
      $sFileName = '/'.$sName;
    }
    else
    {
      $sFileName = '/'.$sEnvironment.'_'.$sName;
    }

    return APPS__PATH.
      $this->sConfigPath.
      $sContextPath.
      '/'.str_replace
        ( '::',
          '/',
          $sNamespace
         ).
      $sFileName;
  }
}
?>
Und eingebunden wird der dann ganz einfach so:

Code: Alles auswählen

// Implement extended configuration-provider
import
  ( 'namespace::to::configuration::provider',
    'MyIniConfigurationProvider'
   );

ConfigurationManager::registerProvider
  ( 'ini',
    new MyIniConfigurationProvider ()
   );
 
Und schon nutzt du die andere Pfad-Struktur :)
There are only 10 Types of people in the world:
Those who understand binary and those who don't.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4606
Registriert: 04.11.2007, 16:13:53

Re: Config Namespace <=> Context

Beitrag von dr.e. » 17.06.2013, 22:54:23

Danke dir!
Viele Grüße,
Christian

Benutzeravatar
MrNiceGuy
Beiträge: 749
Registriert: 03.02.2009, 16:49:42
Wohnort: Nienburg / Weser

Re: Config Namespace <=> Context

Beitrag von MrNiceGuy » 18.06.2013, 09:45:38

Keine Ursache. Mannoman, ich musste ganzschön suchen... Ich bin schon viel zu lange raus aus der Thematik :(

Aber grundsätzlich: Wäre dieser Provider nicht ggf. was fürs Wiki oder alternativ mit entsprechender Bezeichnung für das Core-Package? Möglicherweise könnte man die Reihenfolge auch einfach per Konfiguration vornehmen, indem man z.B. soetwas an den Ini-Provider übergibt: '{CONTEXT}::{NAMESPACE}' und standardmäßig eben '{NAMESPACE}::{CONTEXT}' enthalten ist, dann wäre man noch etwas freier in der Gestaltung, ohne jedesmal einen neuen Provider schreiben zu müssen!? Denkbar wäre ja auch noch mehr Platzhalter anzubieten, wie z.B. {ENVIRONMENT} und {LANGUAGE}!?
There are only 10 Types of people in the world:
Those who understand binary and those who don't.

GeneralCrime
Beiträge: 91
Registriert: 14.12.2011, 07:13:16
Kontaktdaten:

Re: Config Namespace <=> Context

Beitrag von GeneralCrime » 09.07.2013, 16:04:13

Danke für diesen Codeschnipsel!

Benutzeravatar
MrNiceGuy
Beiträge: 749
Registriert: 03.02.2009, 16:49:42
Wohnort: Nienburg / Weser

Re: Config Namespace <=> Context

Beitrag von MrNiceGuy » 23.07.2013, 07:40:38

Code-Schnipsel? Das ist ein vollständig implementierter ConfigurationProvider, mein Freund :evil: :lol:
There are only 10 Types of people in the world:
Those who understand binary and those who don't.

GeneralCrime
Beiträge: 91
Registriert: 14.12.2011, 07:13:16
Kontaktdaten:

Re: Config Namespace <=> Context

Beitrag von GeneralCrime » 26.07.2013, 22:44:07

:? ja schnippsel halt :lol:

ne schon klasse sowas besser als mein cshnippsel mit nem fehler drin den ich letzt gepostet hab :lol:

Antworten