我仍然在学习OOP所以这可能甚至是不可能的(虽然我是,如果很惊讶),我需要一些帮助调用另一个类方法。
例如,在ClassA I
有这样的方法:
function getName()
{
return $this->name;
}
现在从ClassB
(不同的文件,但在同一目录下),我想打电话给ClassA
的getName()
我该怎么做呢? 我想只是一个include()
但不工作。
谢谢!
我仍然在学习OOP所以这可能甚至是不可能的(虽然我是,如果很惊讶),我需要一些帮助调用另一个类方法。
例如,在ClassA I
有这样的方法:
function getName()
{
return $this->name;
}
现在从ClassB
(不同的文件,但在同一目录下),我想打电话给ClassA
的getName()
我该怎么做呢? 我想只是一个include()
但不工作。
谢谢!
//file1.php
<?php
class ClassA
{
private $name = 'John';
function getName()
{
return $this->name;
}
}
?>
//file2.php
<?php
include ("file1.php");
class ClassB
{
function __construct()
{
}
function callA()
{
$classA = new ClassA();
$name = $classA->getName();
echo $name; //Prints John
}
}
$classb = new ClassB();
$classb->callA();
?>
如果它们是不同的类,你可以做类似如下:
class A
{
private $name;
public function __construct()
{
$this->name = 'Some Name';
}
public function getName()
{
return $this->name;
}
}
class B
{
private $a;
public function __construct(A $a)
{
$this->a = $a;
}
function getNameOfA()
{
return $this->a->getName();
}
}
$a = new A();
$b = new B($a);
$b->getNameOfA();
我已经在这个例子中做的是先创建的新实例A
类。 而在这之后我创建了一个新的实例B
类,而我通过实例A
到构造。 现在, B
可以访问的所有公共成员A
使用类$this->a
。
另外请注意,我不实例化A
类里面B
类,因为这将意味着我tighly夫妇两班。 这使得它很难:
B
类 A
类为其他类 你需要有内ClassB的ClassA的实例或具有ClassB的继承ClassA的
class ClassA {
public function getName() {
echo $this->name;
}
}
class ClassB extends ClassA {
public function getName() {
parent::getName();
}
}
没有继承或实例方法,你需要ClassA的有一个静态方法
class ClassA {
public static function getName() {
echo "Rawkode";
}
}
---其他文件---
echo ClassA::getName();
如果你只是希望从类的实例调用方法:
class ClassA {
public function getName() {
echo "Rawkode";
}
}
---其他文件---
$a = new ClassA();
echo $a->getName();
无论您选择哪种解决方案, require 'ClassA.php
是必要的。
文件1
class ClassA {
public $name = 'A';
public function getName(){
return $this->name;
}
}
文件2
include("file1.php");
class ClassB {
public $name = 'B';
public function getName(){
return $this->name;
}
public function callA(){
$a = new ClassA();
return $a->getName();
}
public static function callAStatic(){
$a = new ClassA();
return $a->getName();
}
}
$b = new ClassB();
echo $b->callA();
echo $b->getName();
echo ClassB::callAStatic();