如果我的术语不正确,请道歉。我想使用一个类中的方法/函数,并使用它们从另一个类文件输出变量。这是我的主要基地:
<?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文件的类。据我所知,这是。
<?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();
?>
答案 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();