» »

[PHP] Podajanje spremenljivke (objekta) ostalim skriptam

[PHP] Podajanje spremenljivke (objekta) ostalim skriptam

NeOman ::

Hum, morda malce nerodno formiran naslov, ampak trenutno ga ne znam boljse opisat.

Da malce poenostavim problem. V zacetni datoteki bi zelel inicializirati objekt, ga zapisat v spremeljivko in to spremeljivko kasneje uporabljati skozi celotno aplikacijo.

index.php
$db = new DB( ... );
...
include 'module.php';


module.php
...
$result = $db->fetchRow( $query );


Kaksen namig, keyworld, povezava ali resitev - vse je dobrodoslo. Hvala.
http://xhtml.si - HTML, CSS in JavaScript po vaši meri.

misek ::

Saj include podeduje variable scope. Ali ne?

schtr4jh ::

Hmm ... mogoče bi ti pomagal define

EDiT: za objekt ne vem, če ga lahko shraniš notri.

Zgodovina sprememb…

  • spremenil: schtr4jh ()

NeOman ::

Ubistvu imam nekako tako:


        include_once 'settings.php';	
	include_once 'core' . DS . 'core.php';
	
	try {
		
		$request = new Request( $_SERVER[ 'REQUEST_URI' ] );
		
		if ( $request ) {
			
			$page = new Loader( $request );
			
			$page->loadApplicationModel();
			$page->loadApplicationView();
				
		}
		
	} catch (Exception $e) {
		
		if ( SYSTEM_DEBUG == 1 )
			dump( $e->getMessage() );

		exit();
		
	}


V core.php se nastavi $db, nato pa bi zelel to spremeljivko uporabljati znotraj $page->loadApplicationModel(). Ta metoda dejansko poklice zeljeno PHP datoteko.
http://xhtml.si - HTML, CSS in JavaScript po vaši meri.

Ziga Dolhar ::

Em - global? (global $db)
https://dolhar.si/

Zgodovina sprememb…

NeOman ::

global je very very evil solution. :)

Mislim, da bo slo, ce podam v Loader konstruktor spremeljivko in jo nato v metodi ustrezno nastavim.

OK, mi je uspelo.

$page = new Page( $request, $db );


in nato v metodi loadApplicationModel

$db = $this->database;


Ce pa ugotovim kaksne drawbacke pa sporocim. Hvala vsem za pomoc.
http://xhtml.si - HTML, CSS in JavaScript po vaši meri.

Zgodovina sprememb…

  • spremenil: NeOman ()

Ziga Dolhar ::

V praksi sem pri mnogih projektih videl ta način (podajanja kot argumenta pri ustvarjanju objektov), ja. Global je evil, ampak sem mislil da pač "to" iščeš :).
https://dolhar.si/

680x0 ::

Če je instanca Db objekta potrebna za delovanje Page objekta, potem jo podaj kot argument v konstruktorju, drugače pa v objektu Page za to narediš public funkcijo s katero lahko instanco objekta notri preneseš tudi kasneje:

$db = new Db();
$page = new Page();
$page->setDb($db);

Zgodovina sprememb…

  • spremenil: 680x0 ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Shranjevanje v sejo

Oddelek: Izdelava spletišč
8985 (718) faca5
»

PHP include(); problem

Oddelek: Programiranje
10980 (769) DuleKrtola
»

Uporaba spremenjivke iz JavaScript v PHP

Oddelek: Programiranje
171428 (1067) direstrait
»

PHP in objektno programiranje (strani: 1 2 )

Oddelek: Programiranje
8512086 (10553) kivi113
»

ASP.NET + C# vprašanje

Oddelek: Programiranje
342765 (1779) Morenov

Več podobnih tem