Php 从其他文件获取变量';s类函数

Php 从其他文件获取变量';s类函数,php,variables,var,Php,Variables,Var,我想从其他文件的类函数中获取变量。 大概是这样的: file lang.php: <?php class lang { function get() { $dubs = "dubs"; ?> file print.php: <?php require("lang.php"); lang::get(); echo $dubs; ?> 文件lang.php: 文件print.php: 但这不会返回任何结果…正确的方法是 $lang =

我想从其他文件的类函数中获取变量。
大概是这样的:

file lang.php:
<?php
  class lang
  {
    function get()
  {
  $dubs = "dubs";
?>

file print.php:
<?php
  require("lang.php");
  lang::get();
  echo $dubs;
?>
文件lang.php:
文件print.php:

但这不会返回任何结果…

正确的方法是

$lang = new lang();
$dubs = $lang->get();
echo $dbus;

$dubs将仅在创建它的函数中可见。您也在调用该方法,就好像它是一个静态方法一样。您需要使用常规语法:

class lang
{
    function get()
    {
        $dubs = "dubs";
        return $dubs;
    }
}

$lang = new lang()
echo $lang->get();

变量$dubs只能在函数get()中使用,因为您在那里声明了它。如果要在外部使用它,有两个选项:或在函数中返回它的值(在末尾添加return$dubs),以及执行类似$a=lang->get();,或者使其全局化,在类中的任何函数之外声明它。使用哪种方法取决于类和函数的属性;如果要在此类的其他函数中使用该值,请将其设为全局值。

如Luan Nico所示:


您确定掌握了面向对象编程的概念吗?返回值表单
get
,并将其分配给变量。您应该阅读PHP中的作用域:。在调用
get
之前,还必须创建类的实例。我建议读一读,我有很多变量在那get();函数。您希望能够访问调用者中的所有函数吗?那么你有一个基本的设计问题。。。停止编码,重新考虑整个问题。
lang::get()
是否返回任何内容?不。我只想得到它的$dubs。如果它不想让你碰它的$dubs呢?嗯?什么?注释长度必须至少为15个字符。显然,您需要澄清范围和可见性的概念
$dubs
仅存在并且在
lang::get
中可见。如果
lang::get
希望您看到
$dubs
,它会将变量声明为全局变量,或将其传递到某个位置或返回它。事情就是这样的。如果没有这些选项,则表示您无法看到
$dubs
。句点。我不想在函数外部声明它。然后
返回$dubs并说
$dubs=lang::get()在主代码中。我在该函数中有很多变量。如果需要,请将它们声明为全局变量或返回包含所需变量的数组。除此之外,你就完蛋了——局部作用域意味着这些变量中的绝大多数在函数返回后都不存在。在这种情况下,静态与非静态没有多大关系。出于向后兼容性的原因(PHP4对支持类做了最低限度的限制),静态函数不必这样标记。只是注意到一些更新了的注释以反映$dubs的范围。我在该函数中有很多变量。如果您创建一个变量(在本例中为$dubs)在一个方法内部-它将只对该方法内部的代码可见。相反,您可能需要将一个参数传递给该方法,然后根据该参数进行回显。但您不能做的是,从除inside get()之外的任何地方调用$dubs。更不用说以更糟糕的方式调用了。
class lang
{
    function get()
    {
         return "dubs";
    }
}
$lang = new lang();
$dubs = $lang->get();
class lang
{
    static function get()
    {
        return "dubs";
    }
}

$dubs = lang::get();
class lang
{
    static function get(&$dubs)
    {
        $dubs = "dubs";
    }
}

lang::get($dubs);
class lang
{
    static $dubs = "dubs";
}

$dubs = lang::$dubs;