php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.05.2010, 22:08  
Neuer Benutzer
 
Benutzerbild von Knechtle
 
Registriert seit: 05.03.2010
Beiträge: 24
PHP-Kenntnisse:
Anfänger
Knechtle befindet sich auf einem aufstrebenden Ast
Standard Multidimensionales Array & Registry Pattern

Also folgendes ich wollte in meinen Registry Pattern den Setter (__set) in etwa wie folgt aufbauen:

PHP-Code:
class registry
{
...
protected 
$reg = array();
...
public function 
__set($string$value)
{
     if(!
$this->__isset($string))
    {
        
$nodes explode('.'$string);

        foreach(
$nodes as $value)
        {
            
$this->reg[][][]....
        }
    }
}

Und nun habe ich folgendes Problem ich würde gerne den String wie folgt aufbauen:

config.sql.server

Der Value naja sagt der nam eja schon alles^^

Nun möchste ich aber das der für jedes Array, siehe explode('.', $string), dann jeden eintrag in ein multidimensionales array umwandelt.

Der String kann unterschiedlich sein mal 2 Wörter mal 4 ...

Das Array sollte dann wie folgt Aussehen reg['config']['sql']['server'].

Ja das ist eig alles. Dankö!

das Knecht
P.S hoffe das gilt noch unter Einsteiger =P
__________________
<?lol ?>
Knechtle ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.05.2010, 22:14  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Daran habe ich mich auch schon mehrere Male versucht. Meine Erfahrung: Lass es! Das Konzept ist unflexibel, inperfomant und Du wirst es nie benutzen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 20.05.2010, 22:19  
Neuer Benutzer
 
Benutzerbild von Knechtle
 
Registriert seit: 05.03.2010
Beiträge: 24
PHP-Kenntnisse:
Anfänger
Knechtle befindet sich auf einem aufstrebenden Ast
Standard

? Registry Pattern oder nur mit dem Multidimensionalen ?
__________________
<?lol ?>
Knechtle ist offline  
Alt 20.05.2010, 22:22  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Letzteres. Überleg nur mal, wie Du Arrays darin ablegen und später ansprechen willst. Und was passiert, wenn Du einen Eintrag a.b.c plötzlich mit a.b.c.d ansprichst. Wird dann automatisch ein Array draus? Und ist das praktisch? Was passiert mit den vorher gesetzten Wert...
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 20.05.2010, 22:25  
Neuer Benutzer
 
Benutzerbild von Knechtle
 
Registriert seit: 05.03.2010
Beiträge: 24
PHP-Kenntnisse:
Anfänger
Knechtle befindet sich auf einem aufstrebenden Ast
Standard

ja ich kenn es halt nur aus joomla dort wird diese methode im registry pattern benutzt aber so wie ich den code verstanden habe maximal 3 werte

test.test.test

Hmm aber hast ja recht nur wäre halt scho gut wenn du "keys" in einzelne "abschitte" unterteilen könntest ^^
__________________
<?lol ?>
Knechtle ist offline  
Alt 20.05.2010, 22:28  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Dann mach es halt auch für 3 Ebenen - wahrscheinlich würde es sogar reichen einfach nur ein "bla.blub" zu unterstützen. Mehr ist eh nicht praktikabel - schmeiß 'ne Exception und fertig
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 20.05.2010, 22:31  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Vorschlag: Setz das Ganze - zum Testen (!) - einfach mal mit eval um. Das geht fix. Dann arbeite da mal ne Weile mit und Dur wirst merken, dass das echt nicht funktioniert.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 20.05.2010, 22:41  
Neuer Benutzer
 
Benutzerbild von Knechtle
 
Registriert seit: 05.03.2010
Beiträge: 24
PHP-Kenntnisse:
Anfänger
Knechtle befindet sich auf einem aufstrebenden Ast
Standard

Ja wenn man etwas weiter denkt dann stimmts.

Aber so muss man erst mal denken ^^

Auf jeden danke !
__________________
<?lol ?>
Knechtle ist offline  
Alt 20.05.2010, 22:41  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

PHP-Code:
Registry::store ('foo'   'test');
Registry::store ('foo.1' 'bar');

// was jetzt?

array (
  
foo =>  array (
             
=> test ,
             
=> bar  
)

// oder

array (
  
foo =>  array (
             
=> bar  
)

// oder

array (
  
foo =>  tbst // das wäre PHP-Prinzip (String-Caracter-Zugriff) 
)


Registry::restore ('foo');

// Wie durchlaufen? Liefert restore immer eine Kopie des Arrays?
// Und wenn ich das ändere - wie kriege ich die komplette Struktur wieder in die Registry?



Registry::store ('foo'     , new Object);
Registry::store ('foo.lol' 'bar');

// was jetzt? Das:

array (
   
foo =>  object (
              
lol => bar 
           
)
)

// oder das:

array (
   
foo =>  array (
              
lol => bar 
           
)
)

// ??

// Was passiert, wenn ich das tue?

Registry::store ('foo'         'test');
Registry::restore ('foo.bar');

// Wird jetzt foo intern zum Array gecastet? NULL ausgegeben? 
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 21.05.2010, 10:26  
Neuer Benutzer
 
Benutzerbild von Knechtle
 
Registriert seit: 05.03.2010
Beiträge: 24
PHP-Kenntnisse:
Anfänger
Knechtle befindet sich auf einem aufstrebenden Ast
Standard

hmm also zu niko:

Wenn dein reg pattern in etwa wie folgt aussieht dann passiert da nüscht^^

PHP-Code:
<?php

/************************
 *** WPR                *
 ************************
 * @author Knechtle    *
 * @copyrigt 2010      *
 * @version 0.1        *
 ***********************/

/**
* Registry class for storing some information
*
* @abstract
*/
abstract class registry
{
    
/**
    * Storage of the registry
    *
    * @var array
    **/
    
private static $reg = array();
    
       <-- 
some non important code ;) -->

    
/**
    * Add a new vaiable to the registry
    *
    * @param string $key name of the variable
    * @param mixed $value value of the variable
    * @return boolen
    **/
    
public static function set($key$value NULL)
    {
        if(!
self::has($key))
        {
            
self::$reg[$key] = $value;
            return 
true;
        }
        return 
false;
    }

    
/**
    * Return the value of an existing key
    *
    * @param string $key name of the variable
    * @return mixed
    **/
    
public static function get($key)
    {
        if(
self::has($key))
        {
            return 
self::$reg[$key];
        }
        return 
false;
    }

    
/**
    * Checks if an key is allready in the registry
    *
    * @param string $key name of the variable
    * @return boolen
    **/
    
public static function has($key)
    {
        if(isset(
self::$reg[$key]))
        {
            return 
true;
        }
        return 
false;
    }

    
/**
    * Update an key excepts two values and one overload
    *
    * @param string $key name of the variable
    * @param mixed $value value of the variable
    * @overload boolen to verify whether objects are ignored
    * @return boolen
    **/
    
public static function update($key$value$ignore_obj false)
    {
        if(
is_object(self::$reg[$key]) && $ignore_obj === true)
        {
            
self::$reg[$key] = $value;
            return 
true;
        }
        elseif(
is_object(self::$reg[$key]) && $ignore_obj === false)
        {
            return 
false;
        }
        
self::$reg[$key] = $value;
        return 
true;
    }
    <-- 
other not important code -->
}
?>
__________________
<?lol ?>

Geändert von Knechtle (21.05.2010 um 18:37 Uhr).
Knechtle ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
IE8 verliert Session Lenki PHP-Fortgeschrittene 10 25.04.2010 01:10
[Erledigt] Problem bei update mit array feldern fulltilt PHP Tipps 2010 6 13.02.2010 00:59
PHPLot von der Datenbank zum mehrdimensionalen Array mannimammut PHP Tipps 2009 1 15.12.2009 10:40
merge Array? tommy_725 PHP Tipps 2009 3 07.08.2009 18:30
[Erledigt] Tabellen die sich selbst referenzieren Squall PHP Tipps 2009 19 04.08.2009 21:33
[Erledigt] array sortieren PHP Tipps 2004 17 13.05.2009 10:44
Array umwandeln von zwei zu mehrdimensional erselbst PHP Tipps 2009 6 02.04.2009 23:30
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php create an multidimensional array pattern, php registry class multidimensinal, php multidimensional registry, php registry, registry pattern php, registry array php, php registry array multi dimensional, php registry multi dimensional:, mehrdimensionales array joomla, php mehrdimensionales array in string, registry pattern, php __set multidimesional array, php pattern in array, registry pattern multidimensional, http://www.php.de/php-einsteiger/68123-multidimensionales-array-amp-amp-amp-registry-pattern.html, array pattern, php registry pattern, __set multidimensional, php patterns mehrere registry, php array sortieren pattern

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:02 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum