PHP:包括从一个class.php到另一个class.php输出变量的方法?

时间:2016-05-02 04:08:27

标签: php class get set php-include

如果我的术语不正确,请道歉。我想使用一个类中的方法/函数,并使用它们从另一个类文件输出变量。这是我的主要基地:

Sphere.class.php

   <?php

    class SphereCalculator {


    const PI = 3.14;
    const FOUR_THIRDS = 1.33;


        public function __construct($radius){
            $this->setRadius ($radius);
        }

        public function setRadius ($radius){
            $this->classRadius = $radius;
        }

        public function getRadius(){
            return $this->classRadius;
        }


        public function getArea () {

            return self::PI * ($this->classRadius * $this->classRadius);
        }

    }

    $mySphere = new SphereCalculator ($newRadius);

所以使用这个类的函数,我想使用include从第二个php文件输出半径和区域来拉过方法。但我真的很无知从哪里开始。我已经查找了许多教程,但它们都是两个带有一个php文件的类。据我所知,这是。

App.class.php

 <?php
    include ("Sphere.class.php");

    class AppClass {



        function __construct($radius)
        {

        //something here to call $radius from
        //base class and set it to $newRaduis

        }

        function callSphereClass ($mySphere)
        {
        //something to call $mySphere
        //something here to allocate $newRadius

        echo "The radius is ".$newRadius."<br>";
        echo "The area is ".$mySphere->getArea ()."<br>";
        }

    }


    $newRadius = 113;

    $appClass = new AppClass ();
    $appClass->callSphereClass();

    ?>

3 个答案:

答案 0 :(得分:1)

你可以这样做。

<?php
    include ("Sphere.class.php");

    class AppClass {



        function __construct()
        {
            // YOU DO NOT NEED ANYTHING HERE BECAUSE YOU ARE NOT PASSING
            // ANY VALUES INTO THE CONSTRUCTOR
        }

        function callSphereClass ($mySphere)
        {
            //something to call $mySphere
            // CREATE AN INSTANCE OF SphereCalculator
            $createdObj = new SphereCalculator($mySphere);

            //something here to allocate $newRadius
            // USE THE METHODS THROUGH THE OBJECT $createdObj
            echo "The radius is ".$createdObj->getRadius() ."<br />"; // not $newRadius."<br>";
            echo "The area is ".$createdObj->getArea ()."<br>";
        }

    }


    $newRadius = 113; // this needs to be passed into the callSphereClass()

    $appClass = new AppClass();
    $appClass->callSphereClass($newRadius); // like this

?>

答案 1 :(得分:0)

如果要在另一个类中使用某些类的方法,则必须扩展该类。使用parent::ClassName::来调用anchestor的方法。

您可以而且应该在单独的文件中编写每个类。只需使用require_once加载另一个文件中所需的类。适用于在一个地方包含项目中最常用的类,或者更好地查看spl_autoload mechanism

由于PHP中没有经典的多态性,PHP 5.4引入了特性。现在,您可以声明可以由不同类族继承的方法的“包”。

<?php
class BaseClass
{
  protected 
    $a
  ;

  public function __construct($a)
  {
    $this->a = $a;
  }

  public function do_something()
  {
    echo $this->a . "<br>\n";
  }  
}

class Derived extends BaseClass
{
  protected 
    $b
  ;

  public function __construct($a, $b)
  {
    parent::__construct($a);
    $this->b = $b;
  }

  public function do_something()
  {
    echo $this->a . ' / ' . $this->b . "<br>\n";
  }
}

class Derived2 extends Derived
{
  public function do_something()
  {
    parent::do_something();
    BaseClass::do_something();
  }  
}

$obj = new Derived2(1,2);
$obj->do_something();
?>

答案 2 :(得分:0)

在我看来,你只是想使用(即实例化)你的班级;这应该发生在另一个类中是相对不重要的。

include 'Sphere.class.php';

class AppClass {

    protected $radius;

    function __construct($radius) {
        $this->radius = $radius;
    }

    function callSphereClass() {
        $sphere = new SphereCalculator($this->radius);
        echo "The area is ", $sphere->getArea();
    }
}


$newRadius = 113;
$appClass = new AppClass($newRadius);
$appClass->callSphereClass();