PHP:包含一个 class.php 中的方法以输出另一个中的变量?
PHP: Include methods from one class.php to output variables in another?
如果我的术语不正确,我们深表歉意。我想使用一个 class 中的 methods/functions 并使用它们输出另一个 class 文件中的变量。这是我的主要基地:
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);
所以使用这个 class 的函数,我想从第二个 php 文件输出半径和面积,使用 include
来调用这些方法。但我真的不知道从哪里开始。我查了很多教程,但它们都是针对两个 classes 和一个 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();
?>
如果你想在另一个class中使用一些方法,你必须扩展那个class。使用parent::
或ClassName::
调用锚点方法
您可以而且应该将每个 class 写在一个单独的文件中。只需使用 require_once
加载另一个文件中需要的 class。将项目最常用的 classes 包含在一个地方或更好地查看 spl_autoload mechanism.
将适用
由于 PHP 中没有 classic 多态性,PHP 5.4 引入了特征。现在您可以声明 "packages" 种可以由不同 class 家族继承的方法。
<?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();
?>
在我看来,您只是想使用(即实例化)您的class;这应该发生在另一个 class 中相对不重要。
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();
嗨,你可以做到这一点。
<?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
?>
如果我的术语不正确,我们深表歉意。我想使用一个 class 中的 methods/functions 并使用它们输出另一个 class 文件中的变量。这是我的主要基地:
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);
所以使用这个 class 的函数,我想从第二个 php 文件输出半径和面积,使用 include
来调用这些方法。但我真的不知道从哪里开始。我查了很多教程,但它们都是针对两个 classes 和一个 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();
?>
如果你想在另一个class中使用一些方法,你必须扩展那个class。使用parent::
或ClassName::
调用锚点方法
您可以而且应该将每个 class 写在一个单独的文件中。只需使用 require_once
加载另一个文件中需要的 class。将项目最常用的 classes 包含在一个地方或更好地查看 spl_autoload mechanism.
由于 PHP 中没有 classic 多态性,PHP 5.4 引入了特征。现在您可以声明 "packages" 种可以由不同 class 家族继承的方法。
<?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();
?>
在我看来,您只是想使用(即实例化)您的class;这应该发生在另一个 class 中相对不重要。
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();
嗨,你可以做到这一点。
<?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
?>