Jump to content
php.lv forumi

Piekļuve klases vērtībām


hu_ha

Recommended Posts

Tad nu ar abām rokām un kājām metos OOP virzienā. Vienkāršas klases, kas tiek izmantotas vienas, vai atvasinātās klases ir skaidras. Bet problēmas rodas, kad ir izveidots objekts un nepieciešams ar citas klases funkciju iegūt vērtības no šī objekta.

 

Izveidoju divas testa klases A un B:

class A {
var $a1;

function A () {
 return $this->a1=55;
}

function getA() {
return $this->a1;
}

function setA($a) {
 $this->a1=$a;
}

function echoA() {
 echo 'A1 ir: '.$this->a1.'<br/>';
}

function &instance(){
 static $instance=false;
 if(!$instance){
	 $instance = new A();
 }
 return $instance;
}
} //class a beigas

class B {
var $b1;
var $b2;

function B() {
 $this->b1=10;
 $this->b2=20;	
}

function setB() {
 $this->b1=30;
 $aa=A::instance();  //variants 1
 $this->b2=$aa->getA();
 
 $aa= new A(); 	 //variants 2
 $this->b2=$aa->getA();
 
 $this->b2=A::getA();	//variants 3
}

function setB2($b) {
 $this->b2=$b;
}

function echoB() {
 echo 'B1 ir: '.$this->b1.'<br/>';
 echo 'B2 ir: '.$this->b2.'<br/>';
}
} //class B beigas

Kas tiek izsauktas sekojoši

$a = new A();
$a->echoA();
$a->setA(100);
$a->echoA();

$b = new B();
$b->echoB();
$b->setB();
$b->echoB();

Dodot rezultātu:

A1 ir: 55    //konstruktors
A1 ir: 100  //izmana veertiibu
B1 ir: 10   //konstruktors
B2 ir: 20   //konstruktors
B1 ir: 30   // funkcija setB();
B2 ir: 55 // funkcija setB();  vajag lai buutu 100

 

Jautājums sekojošs:

Izveidoju objektu A, kur tiek klases mainīgā a1 vērtība piešķirta 100.

Izveidoju objektu B un vēlos ar funkciju setB() piešķir b2 vērtību tādu, kāda ir uz doto brīdi a1, tas ir 100. Izmēģināju 3 variantus (pie funkcijas ir minēti), bet bez rezultātiem.

Kaa panāk šādu rezultātu?

 

protams, var izmantot konstrukciju:

 

$tmp=$a->getA();
$b->setB2($tmp);

Bet tas jau ir galvenajā programmā, bet kā to var panākt klases funkcijas iekšienē?

Link to comment
Share on other sites

A klases setA metodei tu padod parametru, kas ir tā vērtība, ko uzstāda savam mainīgajam. Bet B klases setB metodei tu nekā nepadod!! Kā tad, lai php zin, kuras a klases vērtību tu gribi piešķirt b??

 

Mans variants:

function setB($a) {
 $this->b2=$a->getA();
}

un 

$a = new A();
$a->echoA();
$a->setA(100);
$a->echoA();

$b = new B();
$b->echoB();
$b->setB($a);
$b->echoB();

izdod ārā 100 :)

Link to comment
Share on other sites

×
×
  • Create New...