[PHP] Onderliggende variable lezen via class

Status
Niet open voor verdere reacties.

robbietjuh

Gebruiker
Lid geworden
9 nov 2008
Berichten
249
Hallo,

Ik heb het probleem dat ik via class Website een variable wil openen die erboven ligt.
Die variable is een array met andere classes erin.
Lang verhaal waarom het op die, eigenlijk best omslachtige wijze, moet.
Met het onderstaande voorbeeld is mijn probleem misschien iets duidelijker...

PHP:
<?php
class website
{
     function getIt()
     {
          echo $__["iets"]->halen();
     }
}

class iets
{
     function halen()
     {
          return "Hello world";
     }
}

$__ = Array("website" => new website, "iets" => new iets);

// Dit werkt:
echo $__["iets"]->halen();

// Dit werkt --NIET--
$__["website"]->getIt();
?>

Weet iemand hoe ik alsnog $__ kan lezen vanuit de class Website?

Met vriendelijke groeten,
Robert
 
Eh, als je het zo doet dan is het hele idee van Classes zegmaar een beetje weg :/

De enige manier om dit te doen is om een superglobal te maken, maar dan kun je net zo goed je class gewoon verwijderen en het allemaal rechtstreeks doen.
 
U hebt niet alle code daarvoor moet u op http://code.google.com/p/autosite/ zijn

PHP:
class User extends User_data{
	private $userpath;
	private $name;
	private $pasword;
	private $level;
	private $isuser;//
	private $kkey;
	private $remoteip;
	private $enabled;
	private $hashList =array();
	private $releasetime = 0 ;
	function User(){
		session_start();
	}
	//<<<<<<<<<<<<<<<<<<<<<<<FUNCTIONS>>>>>>>>>>>>>>>>>>>>>>>>>
	function setUser($username,$path,$kkey){
		//$username=(isset($username)&& $username!="")?$username:$_SESSION['login'];
		//parent:: wil go to extends
 		parent::__construct($username,$kkey);
		$this->name =$username;
		$this->userpath =$path.substr($username, 0, 1)."/".$username."/";
		$this->isuser=(is_dir($this->userpath)&& $username!="")? true:false;
	}
	function login($pasword,$kkey,$c){
		if ($this->isuser)include $this->userpath."data.php";
	    if(isset($this->name)&&isset($incpass)&& $incpass != "" && ishash("md5",$kkey.$incpass,$pasword)){
			$this->setReleasetime();
			$this->setRemoteip();
			$this->level = $loginniveau;
			$this->enabled = $hasaccess;//login enabled or disabled
			return true;
			//$_SERVER["HTTP_ACCEPT"
		} else { 
			return false;
		}
  	}
  	//<<<<<<<<<<<<<<<<<<<<<<<Getters>>>>>>>>>>>>>>>>>>>>>>>>>
	function islogin(){
		return (isset($this->name)&& isset($this->releasetime) && $this->releasetime > time()&&$this->isenabled());//$this->isRemoteip());
	}
	function is_User($username){
		return $this->isuser;
	}
	function getlevel(){
		return ($this->islogin())?$this->level:112;// !login = lowerst level 
	}
	public function getpath(){
		return ($this->islogin())?$this->userpath:"ERROR not login";
	}
  	private function isenabled(){
  		return true;
  	}
}

$user->setUser($username,$autosite['users'],$kkey);

if(isset($user)&& $user->islogin()){

@see print_r(),array_walk()
 
De enige manier om dit te doen is om een superglobal te maken (...)

Bedankt voor je antwoord. Dat was precies wat ik nodig ben en heeft mijn probleem helemaal opgelost.

Frats zei:
Eh, als je het zo doet dan is het hele idee van Classes zegmaar een beetje weg :/

Zoals ik eerder al zei is het een lang verhaal waarom het op deze omslachtige manier moet, helaas is de conclusie dat het noodzakelijk is dat he top deze manier gedaan wordt.

kenikavanbis zei:
U hebt niet alle code daarvoor (...)

Ik snap niet wat je hier mee bedoeld, tevens is dat niet het antwoord op mijn vraag. De vraag was hoe ik de variable $__ alsnog via welke class dan ook kan uitlezen en er dingen mee kan doen. Maar enfin, toch bedankt voor je hulp.

Nu snel verder met bouwen van het daadwerkelijke script en jullie hebben nog wat te goed van me. Lol.

Met vriendelijke groeten,
Robert
 
Eigenlijk dacht ik dat je het zou zien maar toch een hint
een locale variabele vervalt na dat de functie is uitgevoerd dus zal der variabel buiten de functie moeten staan.maar dat ter zijde gelaten zijn er twee mogelijkheden
in het object opgeslagen of self benanderen verschil is de één variable zit in het object dan ander zweeft er buiten. dus ik denk dat het

PHP:
$this->__

word
 
Verder is het niet mogelijk de variable te benaderen buiten de class
een class moet u zien als de beschrijving van een auto (plan)
daarom hebt u nog geen auto

dus moet u een obect aanmaken met new classnamenaam(constructorvariabelen)
verder steek je deze verder in een variabele zelf anders wordt het moeilijk deze te benaderen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan