PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
Php Klass klassis: kuidas kutsuda klassis teise klassi funktsiooni välja?
Postitaja: andu17 2005-01-16 03:33:12

PHP kood:
 
    
class Class1{
        var 
$value;
        
        function 
Class1($value){
            
$this->value $value;
        }
        
        function 
printIT($tmp 1){
            
$str "Class1: ".$this->value;
            if(
$tmp == 0)
                print 
$str;
            else
                return 
$str;
        }
    }

    class 
Class2{
        var 
$value;
        
        function 
Class2($value){
            if(
is_object($value)){
                
$this->value $value->printIT();
            }else
                
$this->value $value;
            
            
$this->printIT(0);
        }
        
        function 
printIT($tmp 1){
            
$str "Class2: ".$this->value;
            if(
$tmp == 0)
                print 
$str;
            else
                return 
$str;
        }
    }

    
/* First case. It works */
    
$x = new Class1(29);
    new 
Class2($x);
    
    
/* Second case. It doesnt */
    
new Class2(new Class1(29));

Esimesel juhul (First case) on tulemuseks: Class2: Class1: 29
seda ta ka olema peab.
Teisel juhul (Second case) on aga tulemuseks: Class2: Class1: Object
kuigi minu arusaamade järgi võiks esimene ja teine variant sama tulemuse anda.

Oleks väga tänulik kui keegi suudab aidata :)
RE: Php Klass klassis: kuidas kutsuda klassis teise klassi funktsiooni välja?
Postitaja: ei viitsi logida 2005-01-16 13:55:16

class Class1 {
# klass 1 objektid
}

class Class1 extends Class2 {
# klass 2 objektid
}
RE: Php Klass klassis: kuidas kutsuda klassis teise klassi funktsiooni välja?
Postitaja: andu17 2005-01-16 16:18:07
Ei ei ei, see extends küll ei ole sobiv lahendus. Kuna reaalses süsteemis on teguerinevate klassidega ja kasutaja ise klasse ei muuda, seega pole võimalik ka extendsi teha. Ning klasse on kokku umbes 20 ning igaühes peab olema võimalik niimoodi objekti sisse lisada. Nii et äkki kellelgi on lahendusi?
RE: Php Klass klassis: kuidas kutsuda klassis teise klassi funktsiooni välja?
Postitaja: MeiX 2005-01-16 18:52:13
Keegi paneb siin segast. Sa võid luua ühe klassi seest teise klassi objekte, aga klass klassi sees ei oma minuarust küll mingit loogikat.
RE: Php Klass klassis: kuidas kutsuda klassis teise klassi funktsiooni välja?
Postitaja: andu17 2005-01-16 20:38:32
Oot mis segast? Point on selles et oleks vaja et mõlemal juhul
see on siis selline väljakuts:

PHP kood:
 
/* First case. It works */
    
$x = new Class1(29);
    new 
Class2($x);

ja selline väljakutse

PHP kood:
 
/* Second case. It doesnt */
    
new Class2(new Class1(29)); 

annaksid sama tulemuse. Aga antud juhul ei anna, sest esimene variant annab tulemuseks Class2: Class1: 29 aga teine annab tulemuseks Class2: Class1: Object, aga Object'i asemel peaks olema ju 29. Mis mul ideoloogias viga on või kuidas sellist lahendust realiseerida.
RE: Php Klass klassis: kuidas kutsuda klassis teise klassi funktsiooni välja?
Postitaja: er 2005-01-16 21:00:02
Ok, tegin katse ja minul andsid mõlemad sama tulemuse (PHP5). Küll aga tuli new ette lisada ka muutuja ($y = new Class1(new Class2(29))).
RE: Php Klass klassis: kuidas kutsuda klassis teise klassi funktsiooni välja?
Postitaja: andu17 2005-01-16 21:25:41
Yesss nüüd hakkas mul ka tööle, jama et ise selle variandi peale ei tulnud. Mul endal PHP 4.3.8. Kuid huvitav ikkagi miks see nii on :D. Aga vähemalt on probleem lahendatud.

Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.0880968570709