Avatar billede jokerper Nybegynder
22. juli 2010 - 14:11 Der er 8 kommentarer og
1 løsning

Global variabler functions.php Hvordan er det nu?

Hej eksperter

Jeg vil gerne have lidt hjælp til at lave nogle:

$pris = "199.-";
$tid = now();
osv.

Som kun skal skrive et sted i function.php så de kan bruges på alle sider.

Er det globale variabler?

Define et eller andet - er det ikke også det som bruges til valg af sprog?
Avatar billede majbom Novice
22. juli 2010 - 15:17 #1
ja du kan bruge define, som du så har adgang til i resten af filen, du kan så lave dine defines i én fil og include den i toppen af de filer, hvor den skal bruges...

define('min_tekst','Dette er en tekst');
echo min_tekst;
Avatar billede intenz Novice
22. juli 2010 - 15:57 #2
Der er mange måder.

Du kan også bruge $GLOBALS:
http://php.net/manual/en/reserved.variables.globals.php

Du kan også en static class der indeholder dem, hvor du så kan kalde dem fra. Det ville nok være den kønneste og mest fleksible løsning. Men måske overkill i forhold til dit behov.
Avatar billede jokerper Nybegynder
22. juli 2010 - 16:45 #3
Kan du ikke give lidt flere eksempler, Så jeg også kan bruge det ved sprog valg.

Jeg er godt klar over php.net, men det er ikke altid lige let at få noget brugbart ud af det, når man kun har en begrænset viden.

Jeg bruger så vidt muligt altid selv php.net inden jeg stiller spm.

Det her får jeg ikke meget hjælp af, desværre:

<?php
function test() {
    $foo = "local variable";

    echo '$foo in global scope: ' . $GLOBALS["foo"] . "\n";
    echo '$foo in current scope: ' . $foo . "\n";
}

$foo = "Example content";
test();
?>

The above example will output something similar to:

$foo in global scope: Example content
$foo in current scope: local variable
Avatar billede flatov Nybegynder
23. juli 2010 - 09:42 #4
Ligesom der bliver sagt, så vil dit problem kunne løses ved at definere variablerne i en fil, og include filen i toppen af filerne der skal benytte variablerne.

I dit eksempel med global scope, der betyder det at den tager en variabel der er defineret uden for funktionen, hvor den anden variabel tager den inde fra funktionen.

Uanset hvad så kræves det, at der er kendskab til din fil med variablerne, dvs. at filen enten bliver kørt eller included.
Avatar billede intenz Novice
23. juli 2010 - 09:49 #5
Jo, men lad os glemme $GLOBALS igen, det er en måde der fungerer, men det bliver hurtigt meget uoverskueligt at arbejde med.

Jeg vil mene det smarteste er, at lave en klasse der indeholder alle dine globale variabler.

Den kan se sådan ud:

class System {
    private static $vars = array();

    private function __construct() { }

    static function setVar($name, $value) {
        self::$vars[$name] = $value;
    }

    static function getVar($name) {
        return self::$vars[$name];
    }
}


Så kan du sætte en global variabel med:

// navn = time
// værdi = time()
System::setVar('time', time() );


Og hente den igen med:

// henter navn = time
print System::getVar('time');


På den måde får du en fast måde at gemme og hente dem på.
Avatar billede intenz Novice
23. juli 2010 - 09:49 #6
Du kan selvfølgelig også kalde den noget andet end System hvis du har lyst.
Avatar billede majbom Novice
04. november 2010 - 14:23 #7
kom du videre?
Avatar billede jokerper Nybegynder
01. december 2010 - 12:00 #8
Ja, læg bare et svar, det var dog ikke lige det jeg søgte efter. Men sådan er det jo når man prøver sig frem med forskellige muligheder.
Avatar billede majbom Novice
01. december 2010 - 13:56 #9
springer over, hvis det ikke kunne bruges...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester