Re: Avoid object twice

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sorry I still have a problem.

I separete files belows;
-------------My.php-------
<?php

Class My{
	private $word;
	function __construct($getword){
      	$this->word=$getword;
	}
	public function buff(){
    	echo $this->word."<br />";
	}
}
?>
----------------------------------

--------------b.php------------
<?php
function __autoload($class_name) {
   include_once $class_name . '.php';
}


$objref=new My("Good");
$objref->buff();
?>
--------------------------------

--------------c.php----------
<?php
	function __autoload($class_name) {
   include_once $class_name . '.php';
}

$obj=new My("Hello");
$obj->buff();
------------------------------


First I execute c.php
Then I got "Hello"

Next I execute b.php
Then I got "Good"

I would like to get to execute b.php
Then I got "Hello" and "Good"         <-------------I need


The problem is how to get parameter from c.php to b.php.

Please do help me!


Regards,
Yui

2008/6/4 Jim Lucas <lists@xxxxxxxxx>:
> 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{
>>       private $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@xxxxxxxx>:
>>>
>>> Quoting Yui Hiroaki <hiroakiyui@xxxxxxxxx>:
>>>
>>>> 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@xxxxxxxx>:
>>>>>
>>>>> Quoting Yui Hiroaki <hiroakiyui@xxxxxxxxx>:
>>>>>
>>>>>> 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@xxxxxxxxx>:
>>>>>>>
>>>>>>> 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{
>>>>>>>     private $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@xxxxxxxxx>
>>>>>>> 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@xxxxxxxxx>:
>>>>>>>>>
>>>>>>>>> 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@xxxxxxxxx>
>>>>>>>>> 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.php
>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> PHP General Mailing List (http://www.php.net/)
>>>>>> To unsubscribe, visit: http://www.php.net/unsub.php
>>>>>>
>>>>>>
>>>>>
>>>>> 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{
>>>>>      private $word;
>>>>>      function __construct($getword){
>>>>>      $this->word=$getword;
>>>>>      }
>>>>>      public function buff(){
>>>>>      echo $this->word."<br />";
>>>>>      }
>>>>> }
>>>>>
>>>>>
>>> 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){
>>>       $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
>>>
>>>
>>
>
> 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 Shakespeare
>
>

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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux