Jay Sheth wrote:
Hi NYPHPers,

Here's a question:
What would you expect to be outputted below (using PHP 4)?

<?php
  class xyz{
   function xyz($id){
       $this->id = $id;
} } class abc extends xyz{
      function def($id){
parent::xyz($id); }
  }
$test = new abc(43);
  echo $test->id;
?>

If you answered 'nothing', you're wrong. It outputs '43'. I'm wondering
how PHP find that def() is the constructor when instantiating the abc
class?



It doesn't call def() at all. If you don't provide a constructor for a class, PHP calls the parent class's constructor. In this case xyz(). If class xyz didn't have a constructor, then you should expect nothing to be returned. Try putting an echo into def() to verify what is and is not being called.

Scott Mattocks
_______________________________________________
New York PHP Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

NYPHPCon 2006 Presentations Online
http://www.nyphpcon.com

Show Your Participation in New York PHP
http://www.nyphp.org/show_participation.php

Reply via email to