【问题标题】:some kind off variable problem within php classphp类中的某种变量问题
【发布时间】:2023-03-21 22:34:01
【问题描述】:

我班上有这个

当调用第二个函数时 php 错误 错误的数据类型,只有变量可以通过引用过去。

我不知道他们的意思

此代码来自 php.net 如果相同的代码在类之外它执行得很好

如果我在课堂上工作,我在这里做错了什么?

$extensiesAllowed= array();

function __construct() {
        $this->extensiesAllowed= array("txt", "pdf");
        $this->fileName= $_FILES['file'];  
    }


    private function isAllowedExtensie($fileName) {

    return in_array(end(explode(".", $fileName)), $this->extensiesAllowed);
    }



public function check_upload() {

        if($this->fileName['error'] == UPLOAD_ERR_OK) {
            if(isAllowedExtensie($this->fileName['name'])) {
            return true;

            }   
        }
    } 

php错误显示

Array
(
    [bestandsNaam] => ACCOUNT INFO.txt
    [extensiesAllowed] => 
)

谢谢,理查德

【问题讨论】:

  • 如果您可以发布整个课程并发布您收到的错误消息,这可能会更好
  • 不,没有什么可以调试的了,我把其余的都排除在外了,你收到错误消息了吗?我刚刚编辑了它
  • 确切地说是这样--只有变量应该通过引用传递,而 second--in_array() [function.in-array]: Wrong datatype for second argument 然后它们显示了问题。

标签: php class variables pass-by-reference


【解决方案1】:

尝试在单独的语句中结束和分解 - 我认为 end() 可以通过引用来阅读。无论如何,如果它没有解决问题,它将帮助您找出导致您出现问题的线路。

【讨论】:

  • end() 确实通过引用传递。另一种方法是使用pathinfo() (php.net/pathinfo)。
  • $a=explode(".", $filename);返回 in_array(end($a), $this->extensiesAllowed);我无法真正理解它,但错误消失了。这样做似乎并不明显,因为它在课堂外也能正常工作。
【解决方案2】:

在你应该调用的第二个函数/方法中应该调用 isAllowedExtensie as $this-> isAllowedExtensie()

if($this->isAllowedExtensie($this->fileName['name'])) {

编辑:忘记我的第二条评论..

【讨论】:

  • 哦,妈的,我错过了那个,那是一个倒下。现在我只剩下第一个错误了。引用传递错误。
  • 我真的不知道为什么,但是将语句 end() 和 explode() 分开就可以了。
猜你喜欢
  • 2012-04-27
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多