2016-09-15 113 views
0

我在这里苦苦挣扎了一些PHP代码。就像标题所说,我试图将一个Class的实例作为参数传递给一个函数(注意,这个文件位于另一个文件中,并且具有不同的作用域,因此我需要将它作为参数传递)。 这是我目前设置代码:将方法的类实例传递给一个函数PHP

// requires built this page, the classes and the functions are in seperate files. 
    // That's why I need to pass it in as a parameter. 

    class ClassName { 
    private $name; 
    private $age; 

    public function getAge(){ 
     return $this->age; 
    } 
    } $className = new ClassName(); 

    // seperate file 
    var_dump($className); // works, but has no methods. 

    function randomFunc($className){ 
     echo $className->getAge(); // call to undefined method className::getAge() 
    } randomFunc($className); 

编辑2: 我在这里上传我的代码: http://sandbox.onlinephpfunctions.com/code/99954d61ca4d3f53ce549dab9f8333630633d89c

我希望你们这些人能帮助我,任何帮助,将不胜感激。

+0

您是否将具有类定义的文件包含在单独的文件中? –

+0

这是正确的! @CharlotteDunois –

+0

'var_dump'不显示方法,对于'echo'也不显示方法,如果没有输出或没有数据显示,则不会显示方法。哟没有在你的课堂中设置年龄,所以'getAge'返回NULL,不能用'echo'显示。为了测试目的'私人$年龄= 12;'(或任何其他数字),它会工作。 –

回答

0

这工作得很好:

<?php 
class ClassName { 
    private $name; 
    private $age = 19; 

    public function getAge(){ 
     return $this->age; 
    } 
    } 

    function randomFunc($className){ 
     echo $className->getAge(); // call to undefined method className::getAge() 
    } 

$className = new ClassName(); 

randomFunc($className); 

输出:19

你的代码也运行正常对我来说,它只是输出没有因为年龄$是空的。

您运行的是哪个版本的PHP?

+0

我在XAMPP上使用PHP 5/7。你必须明白,这是一个基于我面临的问题的例子。目前的代码要复杂得多,但它在同样的事情上失败了。你在$年代是正确的,这是我在复制这个例子时犯的一个小错误。所以从理论上讲,这没有错? –

+0

是的,你的代码应该很好:) – skrilled

+0

我已经得到了我的答案,我犯了一个愚蠢的错误。无论如何,非常感谢你提供这样一个很好的答案! –

相关问题