【问题标题】:Accessing private function in included php file [closed]访问包含的 php 文件中的私有函数 [关闭]
【发布时间】:2020-12-09 21:15:01
【问题描述】:

我目前有两个 php 类文件,我正在努力访问它们之间的函数。目前,在 secondClass.php 文件中,我能够成功调用 firstClass.php 中的一个函数,然后该类在同一个 firstClass.php 文件中调用另一个函数,预计会返回一个结果

我可以成功访问该函数,但是当我检查 firstClass 函数 isLoaded 是否为 true 或访问它时,我得到一个错误,因为它是一个私有函数

如何从 firstClass.php 中的这个私有函数中获取返回的对象?

firstClass.php

private function loadData($id){
  return $this->isLoaded();    
}

private function isLoaded(){

  $var = 123;

  return $var;
}

secondClass.php

public function getResult($id){
  $firstC = new firstClass();

    $result = 'ABC';
    $newResult = $firstC->loadData($result);

    if($firstC->isloaded){
        echo('we are good');
    }
}

【问题讨论】:

  • 你不能。您必须通过公共方法公开它。
  • 另外,您实际上并没有在这里调用该方法:if($firstC->isloaded){。这里发生的是试图访问一个名为isloaded 的属性。调用方法需要加上括号:if($firstC->isLoaded()){
  • 有道理,谢谢。我想我会把它改成公开的

标签: php class


【解决方案1】:

您可以向第一个公开的类添加一个属性。

public isLoaded = false;

然后您可以使用您的方法更改该值。而且我认为从技术上讲,您的方法名称与作为动词与作为名词调情。您可以将现有的 isLoaded 方法更新为类似于 checkIsLoaded 的方法,它将公共属性设置为 true 或 false。

public isLoaded = false;

private function loadData($id){
  return $this->isLoaded();    
}

private function checkIsLoaded(){
    
    $var = 123;

    $this->isLoaded = $var;
}

现在您可以使用与以前相同的格式访问它:

$firstC->isloaded;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    相关资源
    最近更新 更多