简体   繁体   中英

How to extract variable from one function into another in same class in php

I want to use variable value from one function into another function of same class. I am using abstract class using which I am declaring variable as global indirectly. I can not declare variable as global in the class. My demo code is as follows:

<?php 
abstract class abc
{
   protected    $te;
}

class test extends abc
{
public  function team()
{
    $te = 5;
    $this->te += 100;
}

public  function tee()
{
    $tee = 51;
    return $this->te;
}

}
$obj = new test();
echo $obj->tee();


//echo test::tee();
?>

Is this possible that I can echo 105 as answer there?

My main motive is I want to learn that how to get variable value from one function into another using without declaring that global in the same class Please let me know Is this possible OR I need to delete my question ?

<?php 
abstract class abc
{
   protected    $te;
}

class test extends abc
{
    public function __construct() {
        $this->te = 5;
    }

    public  function team()
    {
        $this->te += 100;
    }

    public  function tee()
    {
        return $this->te;
    }
}

$obj = new test();
$obj->team();
echo $obj->tee();

-- edit: to make at least some use of the abstract "feature":

<?php 
abstract class abc
{
    protected    $te;

    abstract public function team();
    public  function tee()
    {
        return $this->te;
    }
}

class test extends abc
{
    public function __construct() {
        $this->te = 5;
    }

    public function team()
    {
        $this->te += 100;
    }
}

$obj = new test();
$obj->team();
echo $obj->tee();

-- edi2: since you've asked whether you must invoke team (and then deleted that comment):

<?php 
abstract class abc
{
    protected    $te;

    abstract public function team();
    public  function tee()
    {
        $this->team();
        return $this->te;
    }
}

class test extends abc
{
    public function __construct() {
        $this->te = 5;
    }

    public function team()
    {
        $this->te += 100;
    }
}

$obj = new test();
echo $obj->tee();

So, yes, it has to be invoked somewhere. But depending on what you're trying to achieve there are numerous ways to do so.

Each property of the class can be accessed by each method of the same class. So you can create methods which are working with the same property. And you don't need to create parent abstract class.

class test
{
     protected $te = 5;

     public  function team()
     {         
          $this->te += 100;
     }

     public  function tee()
     {
         return $this->te;
     }

}

$obj = new test();
$obj->team();
echo $obj->tee();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM