Avatar billede bacce.dk Nybegynder
28. april 2003 - 21:46 Der er 4 kommentarer og
2 løsninger

OOP og variabler ude fra ??

Hejsa
fra mine php sider laver jeg kald til mine functioner på følgende måde.
require("funktions.php");
$a=new bruger();
$a->opret_bruger($bruger, $pass);

(bare et eksembel)

min funktions.php ser således ud...

require_once("conf/config.inc.php");

// Connecter til db
mysql_connect("$dbhost", $dbuser, $dbpass);
mysql_select_db($database);

// Diverse includes/require's

//require_once("classes/news.php");
require_once("classes/services.php");
require_once("classes/bruger.php");

de filer der er i mappen classes er alle klasser med små funktioner, og i dem kunne jeg rigtig godt tænke mig at importere de variabler som er i conf/config.inc.php, meen hvorn gør jeg det ??
Avatar billede jakoba Nybegynder
28. april 2003 - 22:03 #1
alle de filer du inkluderer kan frit bruge variable oprettet af andre filer du har inkluderet. du behøver ikke gøre noget specielt for det; det er helt automatisk.

Det eneste du skal sørge for er ikke at bruge en variabel før du har oprettet den.

indeni enhver funktion må du specifikt nævne enhver variabel 'udefra' som du ønsker at bruge indeni funktionen. (det er et par undtagelser, men det skader ikke at gøre det selvom det er unødvendigt)

function skal_bruge_haarfarve( $nyfarve ) {
    global $haarfarve;  // nu kan den $haarfave variabel der
                      // er defineret udenfor finktionen bruges indeni den
    $haarfarve = $nyfarve;
}

Dog skal du vide at det er skidt programmering at lade sine funktioner lave sideeffekt på variable. Undgå det hvis du kan, fx ved istedet at sige:

function skal_ikke_bruge_haarfarve( $nyfarve ) {
    return $nyfarve;
}
$haarfarve = skal_ikke_bruge_haarfarve( $nyfarve );
    // her ser du klart hvilken variabel 'udenfor' der bliver ændret.
    // det giver færre fejl i programmet

mvh JakobA
Avatar billede bacce.dk Nybegynder
28. april 2003 - 22:13 #2
Jakoba>> tak tak for din respont meen alt det der virker bare ik i oop med classes :-)
dit lille eks fek.s skulle se sådan her ud...

function skal_ikke_bruge_haarfarve( $nyfarve ) {
    return $nyfarve;
}
$haarfarve = $this->skal_ikke_bruge_haarfarve( $nyfarve );
    // her ser du klart hvilken variabel 'udenfor' der bliver ændret.
    // det giver færre fejl i programmet

men som sagt jeg skal bare have de faste variabler som er sat i min config fil...
disse variabler indeholder fek.s bruger og pass til mySQL (virker da jeg hendter dem uden for class) men de indeholder også stier,(patch) som ville være meget lettere at KUN rette et sted frem for i alle mine filer det er derfor jeg skal have dem hendtet ind i mine classes
Avatar billede jakoba Nybegynder
28. april 2003 - 22:23 #3
prøv at give et konkret eksempel. den generelle beskrivelse er ikke rigtig forståelig.
Avatar billede bacce.dk Nybegynder
28. april 2003 - 22:32 #4
jeg skrev nederst i selve spm.
"de filer der er i mappen classes er alle klasser med små funktioner, og i dem kunne jeg rigtig godt tænke mig at importere de variabler som er i conf/config.inc.php, meen hvorn gør jeg det ?? "

som jeg skriver "klasser"
altså
class et-eller-andet
{
var $et;
var $eller;
var $andet;

function hent doc_rotten()
{
$this->et=$userroot
echo "$this->et";
}
}

her er et eksempel på en klasse hvor jeg i den skrevne funktion gerne ville udskrive variablen $userroot som befinder sig i min config fil..

problemet er bare at jeg får ik indholdet frev ved hverken at skrive
$userroot eller global $userroot så kort og godt hva skla jeg så skrive for at få indholdet frem i disse klasser / funktioner ??
Avatar billede jakoba Nybegynder
29. april 2003 - 00:15 #5
tjae, som før sagt ville jeg skrive:
function hent doc_rotten()
{
global $userroot;
$this->et=$userroot;  // husk ; til at afslutte sætningen
echo "$this->et";
}

men hvis det ikke virker for dig ved jeg søreme ikke hvad der er galt.
Avatar billede bacce.dk Nybegynder
29. april 2003 - 00:19 #6
har fundet ud af det nu...
for at hendte det frem skal jeg bruge
".$GLOBALS["userroot"]."
så kommer det frem og uden nogen probs...
hmm mente bare jeg allerede havde prøvet den mulighed med fejl:

// husk ; til at afslutte sætningen
heh det var frit fra leveren det jeg skrev.. det var blot et eks for at vise dig hvad det var jeg ville :-)

men ellers tak for din tid.
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