Php 在方法/函数中调用对象变量

Php 在方法/函数中调用对象变量,php,object,Php,Object,如何调用方法中包含对象的变量?任何建议和帮助都将不胜感激 下面是我进一步解释的例子 这是我的类脚本,名为shirt.php <?php class shirt { //some function and code here public getSize() { return $this->size; } } ?> 下面是我的脚本,它调用shirt.php,名为shirt.func.p

如何调用方法中包含对象的变量?任何建议和帮助都将不胜感激

下面是我进一步解释的例子

这是我的类脚本,名为shirt.php

<?php 
    class shirt {
        //some function and code here
        public getSize() {
            return $this->size;
        }
    }
?>

下面是我的脚本,它调用shirt.php,名为shirt.func.php

<?php
    require_once 'shirt.php';

    $shirt = new Shirt();

    function getShirtSize() {
        return $shirt->getSize();
    }
?>

问题是我不能在函数中使用变量$shirt,但是如果我在函数之外使用它,它会工作得很好。我找到了一个解决方法,那就是创建一个返回该对象初始化的方法

这是我的方式:

<?php
    require_once 'foo.php';

    function init() {
        return $shirt = new Shirt();
    }

    function getShirtSize() {
        return init()->getSize();
    }
?>

还有其他有效的方法吗?谢谢你的专业建议

require_once 'shirt.php';

$shirt = new shirt();

function getShirtSize($_shirt) {
    return $_shirt->getSize();
}

getShirtSize($shirt) // pass the $shirt to the function
编辑:

或者(不那么)伟大的全球:

require_once 'shirt.php';

$shirt = new shirt();

function getShirtSize() {
    global $shirt;
    return $shirt->getSize();
}

getShirtSize();

方法和函数有自己的范围。他们只知道对象和标量,而您显式地向他们提供。因此,您必须将对象传递到函数中

require_once 'shirt.php';

$myCurrentShirt = new Shirt();

function getShirtSize($shirt) {
    return $shirt->getSize();
}

我会的。有关函数用法的详细信息,请参见mor。

您所做的事情很奇怪。如果您真的需要,可以在外部定义
$shirt
,然后使用
全局$shirt
在您希望使用的任何函数中(
$shirt
)(或将其作为参数传递到函数getShirtSize($shirt)。我不明白为什么您不只是执行
$shirt=new shirt();$shirt\u size=$shirt->getSize()
神奇的单词是
global
!这就是函数的用途。@adeneo不。只是不。
global
是邪恶的,没有任何
global
可以解决的问题比通过参数注入更好。两个星号**的目的是什么?如果我想从其他脚本调用此方法,这将是专业的布莱姆。还有其他建议吗?@shadow-当然,请使用global