Re: Classes and access to outside variables

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

 



On 10/1/07, Merlin <ngroups@xxxxxxxxxxx> wrote:
>
> Hello everybody,
>
> thank you for all your answers. I am sorry but I just realized that
> there is an huge difference between PHP5 and PHP4 considering OOP.
> Unfortunatelly I am still running PHP4.x and cant change this over
> night. However I still need to implement this class which does work very
> well, just needs handwritten parameters again.
>
> There is one file where the DB login data is stored and the new ajax
> class I am using needs this data as well. Right now I am changin this in
> both files, as I could not figure out how to access the variable from
> inside the class. The code Martin has written seems only to work in PHP5
> as I do get errors.
>
> For now all I do want is to access an outside variable from inside a
> class with PHP4 code. Thats all. I will look into classes more deaply in
> the next days and in PHP5, but it would be very helpful if somebody
> could help me now with getting that variable.
>
> Thank you for your help.
>
> Best regards,
>
> Merlin
>


Merlin,

in php4 there are no restrictions on variable access from outside the class.
you can access any member variable from an instance of the class directly,
here is an example:

class SomeClass {
    var $someVar = 'hello';
}

$classInstance = new SomeClass();

echo $classInstance->someVar;   /// prints hello

i recommend you not do this however, since standard practice is to mark
variables
private and expose access to them through public methods.  as you indicated
php4
does not have ppp support.  but, if you want a tip on how to write decent oo
code
in php4 here it is; drive all access to member variables through methods.
when you
later (if ever) port the code to php5, the member variables can be marked
private and
the member functions can be marked public.  here is a revision of the above
example
to demonstrate:

class SomeClass {
    var $someVar = 'hello';

    /// getter method; return the value of the instance variable
    function getSomeVar() {
        return $this->someVar;
    }

    /// setter method, change the value of the instance variable
    function setSomeVar($someVar) {
       // some validation perhaps
        $this->someVar = $someVar;
    }
}

$someClassInstance = new SomeClass();
echo $someClassInstance->getSomeVar ();   /// prints hello

$someClassInstance->setSomeVar('wow');
echo $someClassInstance->getSomeVar();   /// prints wow

that is good practice per php4 oop programming (imho).  if it doesnt
run you may have to weed out a typo or 2, i just wrote it right into the
email.
also, you dont have to pass data into the constructor only.  typically, you
only pass data into a constructor that a constructor may need to create
an initial state for the object instance.  if an object instance is valid
w/o
some data youre thinking about passing into the constructor, it may be
better
to just have a separate setter method.

-nathan

[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