来自具有初始化程序的另一个类的PHP Access类

时间:2014-12-15 23:40:07

标签: php function class oop pdo

好的,所以我正在构建一个依赖Zend PHP的Web应用程序....

在必须阅读所有内容来描述我的嵌套函数之前,我需要的是能够从一个类调用一个函数到另一个类,这两个类都没有扩展到另一个类,它们已经扩展了一个db构造函数,它们都是独立的一个主要初始化脚本调用的文件....(?)...提前谢谢,下面有一个更好的例子,我的意思。

我的HTML页面调用了一个" master" include list,用于初始化和创建所有类的所有实例,以便所有页面都具有对函数的共同访问权限。即require('app_init.php');

以下是app_init.php最重要的摘录:

require_once('class-general.php');
require_once('class-users.php');
require_once('class-identities.php');

$general = new General();
$users = new Users($db);
$iden = new Iden($db);

---类general.php

$general是我使用的愚蠢常用函数的基础,以及可以扩展所有类的DB构造函数。

----类users.php

<?php 
class Users extends General{
public function getUserID(){....random block of auth code....  return $randomID#; }
}?>

-----类identities.php

<?php
class Iden extends General{

public function do_random_change_to_db($with_me){
....random prepared function using $with_me....

$this->logger->log("Someone with UserID: ". /*((?$this?) HERE:)*/  FIXME->getUserID() . " did something : ".$with_me ."." , Zend_Log::INFO);

$success="gucci";
return $success;
}
}?>

现在,我正在抛出一个PHP错误 致命错误:在......“

中调用未定义的方法Iden :: getUserID()

最好的方法是什么?我试图将一个类文件包含在另一个类文件中,但我并不想创建一个$FIXME= new Users();以节省内存空间。 老实说,我也不愿意在此时再延长任何课程。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

如果getUserID方法不依赖于任何实例状态(并且它看起来不是这样,尽管您还没有完全清楚),请将其{{3}允许你像这样调用它:

Users::getUserID();

如果 依赖于实例状态,则需要在Users类的实例上调用它。

在我看来,General的方法实际上也应该是static,或者甚至可能是类之外的自由函数。记住:类用于封装状态。如果没有需要封装的状态,请使用类(静态)方法或简单函数。不要通过引入那些范例没有意义的对象和继承来使代码复杂化。