[PHP] objects handling objects

2002-04-04 Thread Erik Price

I looked in the manual, but didn't see anything about this.  I've read 
that PHP isn't a true object-oriented language, but rather simulates 
elements of object-oriented programming.  Can I write a class that 
performs operations and manipulates objects?  Can objects be placed into 
arrays etc?

Erik







Erik Price
Web Developer Temp
Media Lab, H.H. Brown
[EMAIL PROTECTED]


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP] objects handling objects

2002-04-04 Thread Steve Cayford


On Thursday, April 4, 2002, at 04:21  PM, Erik Price wrote:

 I looked in the manual, but didn't see anything about this.  I've read 
 that PHP isn't a true object-oriented language, but rather simulates 
 elements of object-oriented programming.  Can I write a class that 
 performs operations and manipulates objects?  Can objects be placed 
 into arrays etc?

 Erik

The real hindrance I've come up against is that you can't do chained 
method calls, otherwise objects perform pretty well as expected. Keep in 
mind the difference between passing by reference and by copy, though, or 
you'll find yourself updating a copy of an object somewhere instead of 
the original.

-Steve

Here's some code I was just playing around with:

?php

class classA {
 function method1() {
 return 1;
 }
 function method2() {
 return 2;
 }
}

class classB {
 function method1($num = 0) {
 return $num + 10;
 }
 function method2($num = 0) {
 return $num+20;
 }
}

class classC {
 function echoMethod($object) {
 return $object;
 }
}

class classD {
 function otherMethod1($object) {
 return $object-method1();
 }
 function otherMethod2($object) {
 return $object-method2();
 }
}

$a = new classA;
$b = new classB;
$c = new classC;
$d = new classD;

print(a1:  . $a-method1() . br /\n);
print(a2:  . $a-method2() . br /\n);
print(b1:  . $b-method1($a-method1()) . br /\n);
print(b2:  . $b-method2($a-method2()) . br /\n);
print(d1:  . $d-otherMethod1($b) . br /\n);
print(d2:  . $d-otherMethod2($c-echoMethod($a)) . br /\n);

// this next line would generate a parse error
// print(c:a1:  . $c-echo($a)-method1() . br /\n);

// this outputs:
// a1: 1
// a2: 2
// b1: 11
// b2: 22
// d1: 10
// d2: 2

?





 

 Erik Price
 Web Developer Temp
 Media Lab, H.H. Brown
 [EMAIL PROTECTED]


 -- PHP General Mailing List (http://www.php.net/)
 To unsubscribe, visit: http://www.php.net/unsub.php



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP] objects handling objects

2002-04-04 Thread Steve Cayford

Doh, typo:

// this next line would generate a parse error
// print(c:a1:  . $c-echo($a)-method1() . br /\n);

should read

// this next line would generate a parse error
// print(c:a1:  . $c-echoMethod($a)-method1() . br /\n);


On Thursday, April 4, 2002, at 05:25  PM, Steve Cayford wrote:


 On Thursday, April 4, 2002, at 04:21  PM, Erik Price wrote:

 I looked in the manual, but didn't see anything about this.  I've read 
 that PHP isn't a true object-oriented language, but rather simulates 
 elements of object-oriented programming.  Can I write a class that 
 performs operations and manipulates objects?  Can objects be placed 
 into arrays etc?

 Erik

 The real hindrance I've come up against is that you can't do chained 
 method calls, otherwise objects perform pretty well as expected. Keep 
 in mind the difference between passing by reference and by copy, 
 though, or you'll find yourself updating a copy of an object somewhere 
 instead of the original.

 -Steve

 Here's some code I was just playing around with:

 ?php

 class classA {
 function method1() {
 return 1;
 }
 function method2() {
 return 2;
 }
 }

 class classB {
 function method1($num = 0) {
 return $num + 10;
 }
 function method2($num = 0) {
 return $num+20;
 }
 }

 class classC {
 function echoMethod($object) {
 return $object;
 }
 }

 class classD {
 function otherMethod1($object) {
 return $object-method1();
 }
 function otherMethod2($object) {
 return $object-method2();
 }
 }

 $a = new classA;
 $b = new classB;
 $c = new classC;
 $d = new classD;

 print(a1:  . $a-method1() . br /\n);
 print(a2:  . $a-method2() . br /\n);
 print(b1:  . $b-method1($a-method1()) . br /\n);
 print(b2:  . $b-method2($a-method2()) . br /\n);
 print(d1:  . $d-otherMethod1($b) . br /\n);
 print(d2:  . $d-otherMethod2($c-echoMethod($a)) . br /\n);

 // this next line would generate a parse error
 // print(c:a1:  . $c-echo($a)-method1() . br /\n);

 // this outputs:
 // a1: 1
 // a2: 2
 // b1: 11
 // b2: 22
 // d1: 10
 // d2: 2

 ?





 

 Erik Price
 Web Developer Temp
 Media Lab, H.H. Brown
 [EMAIL PROTECTED]


 -- PHP General Mailing List (http://www.php.net/)
 To unsubscribe, visit: http://www.php.net/unsub.php



 -- PHP General Mailing List (http://www.php.net/)
 To unsubscribe, visit: http://www.php.net/unsub.php



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php