Re: Avoid object twice
| From: | Jim Lucas | Date: | Tue, 03 Jun 2008 16:40:00 +0000 |
| Subject: | Re: Avoid object twice | ||
| References: | 1 2 3 4 5 6 7 8 9 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-274961@lists.php.net to get a copy of this message | ||
Yui Hiroaki wrote:
The code is blelow; -----------------b.php---------------- <?php function __autoload($class_name) { include_once $class_name . '.php'; } $objref=new My("Good"); $objref->buff(); ?> ----------------------------------- ----------My.php-------------- <?php $obj=new My("Hello"); $obj->buff(); Class My{You are confusing the terms execute, with include. If you are including a script/file and you only want it included once, then you need to use the *_once constructs. I don't call them functions because they are not functions. include 'filename'; include_once 'filename'; require 'filename'; require_once 'filename'; if you use the *_once calls, your script will only ever be included one time. If you mix them, then you will have problems. your class scripts should be setup to where there is only one class per file and that nothing is "executed" from that file. It should only be included. Then the file(s) that include your class should do the work of initializing and using the class. -- Jim Lucas "Some men are born to greatness, some achieve greatness, and some have greatness thrust upon them." Twelfth Night, Act II, Scene V by William Shakespeareprivate $word; function __construct($getword){ $this->word=$getword; } public function buff(){ echo $this->word."<br />"; }} ?> -------------------------------------- on website, first it execute My.php , then execute b.php So it will show blelow; Hello(when excute My.php) Hello(when excute from b.php) Good(when excute from b.php) I do not need "Hello" twice I would get Hello(when excute My.php) Good(when excute from b.php) Please do help me! Regards, Yui 2008/6/3 Thijs Lensselink <dev@lenss.nl>:Quoting Yui Hiroaki <hiroakiyui@gmail.com>:Please look at my.php my.php load $obj=new My("Hello"); $obj->buff(); so, if a.php load, it absolutely got "hello" in load b.php Regards, Yui 2008/6/3 Thijs Lensselink <dev@lenss.nl>:I don't think i understand you fully. Or you're trying to make it to complicated. You have a class in "My.php" : Class My{ private $word; function __construct($getword){Quoting Yui Hiroaki <hiroakiyui@gmail.com>:Thank you for a good suggest! Somehow, I have to execute my.php also. This program have to run. 1)My.php 2)b.php My.php show "Hello" -> it is OK, b.php shows "Hello" "Good" it is NOT good. I need to get only "Good" Please give me a suggestion. Regards, Yui 2008/6/3 James Dempster <letssurf@gmail.com>:If you only want to see "Good" Then don't run it twice. Take James's suggestion and try it again: -----------------b.php---------------- <?php function __autoload($class_name) { include_once $class_name . '.php'; } $objref=new My("Good"); $objref->buff(); ----------------------------------- ----------My.php-------------- <?php Class My{I suggest you don't put code other than class structures in class files. Also don't execute My.php just execute b.php which though __autoload includes My.php. -----------------b.php---------------- <?php function __autoload($class_name) { include_once $class_name . '.php'; } $obj=new My("Hello"); $obj->buff(); $objref=new My("Good"); $objref->buff(); ----------------------------------- ----------My.php-------------- <?php Class My{-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.phpprivate $word; function __construct($getword){ $this->word=$getword; } public function buff(){ echo $this->word."<br />"; }} /James Dempster On Tue, Jun 3, 2008 at 9:17 AM, Yui Hiroaki <hiroakiyui@gmail.com> wrote:HI! I had mistake in code in php. When I excute My.php, it say "Hello" When I excute b.php, it say Hello Good I would like to execute b.php and show only "Good" If you know it ,please teach me! Here is code below; -----------------b.php---------------- <?php function __autoload($class_name) { include_once $class_name . '.php'; } $objref=new My("Good"); $objref->buff(); ?> ----------------------------------- ----------My.php-------------- <?php $obj=new My("Hello"); $obj->buff(); Class My{private $word; function __construct($getword){ $this->word=$getword; } public function buff(){ echo $this->word."<br />"; }} ?> -------------------------------------- Regards, Yui 2008/6/3 James Dempster <letssurf@gmail.com>:I don't see how it's possible for you to get "Hello" after "Good", when the file that cause's "Hello" is required to do "Good" /James On Mon, Jun 2, 2008 at 2:00 PM, Yui Hiroaki <hiroakiyui@gmail.com> wrote:Please take a look at code. --------a.php-------- $obj=new my("Hello"); $obj->buff(); Class my{ private $word; function __construct($getword){$this->word=$getword;} public function buff(){echo $this->word."<br />";} -------------------------------------- -----b.php----------------------- function __autoload($class_name) { include_once $class_name . '.php'; } $objref=new my("Good"); $objref->buff(); -------------------------------------------- I get an Echo; Good Hello Hello I do not need to get Hello twice. When I b.php , $obj=new my("Hello") is loaded. Do you have any adia to avoid load $obj in a.php twice? Regards, Yui -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.phpprivate $word; function __construct($getword){ $this->word=$getword; } public function buff(){ echo $this->word."<br />"; }}$this->word=$getword;} public function buff(){echo $this->word."<br />";} } And a script that creates an instance of My "b.php" : function __autoload($class_name) { include_once $class_name . '.php'; } $obj=new My("Hello"); $obj->buff(); $objref=new My("Good"); $objref->buff(); The output will be "Hello<br/>Good<br/>". because you call it two times. So if you only want to see "Good". Then you change "b.php" to look like this: function __autoload($class_name) { include_once $class_name . '.php'; } $objref=new My("Good"); $objref->buff(); -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php