Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从构造函数到方法的变量-PHP_Php_Oop - Fatal编程技术网

从构造函数到方法的变量-PHP

从构造函数到方法的变量-PHP,php,oop,Php,Oop,我是PHP OOP的新手,所以如果这个问题是noobish,我很抱歉 我在类的构造函数中选择客户机语言。它看起来像: $lang = $_SERVER['HTTP_ACCEPT_LANGUAGE']; $_SESSION['lang'] = $lang; if(isSet($lang)) setcookie('lang', $lang, time() + (3600 * 24 * 30)); else i

我是PHP OOP的新手,所以如果这个问题是noobish,我很抱歉

我在类的构造函数中选择客户机语言。它看起来像:

$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
         $_SESSION['lang'] = $lang;
         if(isSet($lang))
                setcookie('lang', $lang, time() + (3600 * 24 * 30));
            else if(isSet($_COOKIE['lang']))
                $lang = $_COOKIE['lang'];
            else
                $lang = 'cs';
        switch ($lang) 
        {
            case 'sk':
            $lang_file = 'sk.php';
            break;
            case 'cs':
            $lang_file = 'cs.php';
            break;
            default:
            $lang_file = 'cs.php';
        }
        include_once 'languages/'.$lang_file; 
$lang = array();

//All
$lang['YES'] = 'Ano';
$lang['NO'] = 'Ne';
$lang['NOT_AVALIABLE'] = 'Není k dispozici';
$lang['CURRENCY'] = 'Měna';
  public function fetchByVinAxnmrss($con) {
     $success = false;
     if($this->vin){
     try{
        $sql = "SELECT * FROM axnmrs_cases WHERE vin = :vin ORDER BY date_created DESC LIMIT 60";
        $stmt = $con->prepare( $sql );
        $stmt->bindValue( "vin", $this->vin, PDO::PARAM_STR );
        $stmt->execute();
            while ($row = $stmt->fetch()){
                echo"<tr>";
                echo  "<td class='number'>".$row['claimnumber']."</td>";
                echo $this->lang['AXNMRS_CASE_CREATED_DATE'];
在此之后,如果我向构造函数添加如下内容:
echo$lang['YES']
,它将显示它的翻译

若我向我的另一个方法添加相同的echo,我会得到一个错误,$lang是未定义的。 所以我的问题是这是如何工作的?如何在一个类中为所有方法提供相同的变量而不使用全局变量

谢谢

编辑: 例如,cs.php看起来像:

$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
         $_SESSION['lang'] = $lang;
         if(isSet($lang))
                setcookie('lang', $lang, time() + (3600 * 24 * 30));
            else if(isSet($_COOKIE['lang']))
                $lang = $_COOKIE['lang'];
            else
                $lang = 'cs';
        switch ($lang) 
        {
            case 'sk':
            $lang_file = 'sk.php';
            break;
            case 'cs':
            $lang_file = 'cs.php';
            break;
            default:
            $lang_file = 'cs.php';
        }
        include_once 'languages/'.$lang_file; 
$lang = array();

//All
$lang['YES'] = 'Ano';
$lang['NO'] = 'Ne';
$lang['NOT_AVALIABLE'] = 'Není k dispozici';
$lang['CURRENCY'] = 'Měna';
  public function fetchByVinAxnmrss($con) {
     $success = false;
     if($this->vin){
     try{
        $sql = "SELECT * FROM axnmrs_cases WHERE vin = :vin ORDER BY date_created DESC LIMIT 60";
        $stmt = $con->prepare( $sql );
        $stmt->bindValue( "vin", $this->vin, PDO::PARAM_STR );
        $stmt->execute();
            while ($row = $stmt->fetch()){
                echo"<tr>";
                echo  "<td class='number'>".$row['claimnumber']."</td>";
                echo $this->lang['AXNMRS_CASE_CREATED_DATE'];
我的函数的开始部分如下所示:

$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
         $_SESSION['lang'] = $lang;
         if(isSet($lang))
                setcookie('lang', $lang, time() + (3600 * 24 * 30));
            else if(isSet($_COOKIE['lang']))
                $lang = $_COOKIE['lang'];
            else
                $lang = 'cs';
        switch ($lang) 
        {
            case 'sk':
            $lang_file = 'sk.php';
            break;
            case 'cs':
            $lang_file = 'cs.php';
            break;
            default:
            $lang_file = 'cs.php';
        }
        include_once 'languages/'.$lang_file; 
$lang = array();

//All
$lang['YES'] = 'Ano';
$lang['NO'] = 'Ne';
$lang['NOT_AVALIABLE'] = 'Není k dispozici';
$lang['CURRENCY'] = 'Měna';
  public function fetchByVinAxnmrss($con) {
     $success = false;
     if($this->vin){
     try{
        $sql = "SELECT * FROM axnmrs_cases WHERE vin = :vin ORDER BY date_created DESC LIMIT 60";
        $stmt = $con->prepare( $sql );
        $stmt->bindValue( "vin", $this->vin, PDO::PARAM_STR );
        $stmt->execute();
            while ($row = $stmt->fetch()){
                echo"<tr>";
                echo  "<td class='number'>".$row['claimnumber']."</td>";
                echo $this->lang['AXNMRS_CASE_CREATED_DATE'];
公共函数fetchByVinAxnmrss($con){
$success=false;
如果($this->vin){
试一试{
$sql=“从axnmrs\u案例中选择*,其中vin=:vin订单日期\u创建描述限制60”;
$stmt=$con->prepare($sql);
$stmt->bindValue(“vin”,$this->vin,PDO::PARAM_STR);
$stmt->execute();
而($row=$stmt->fetch()){
回声“;
回显“$row['claimnumber']”;
echo$this->lang['AXNMRS_CASE_CREATED_DATE'];

通过构造函数传递
$lang
变量

class YourClass {

   public $lang;
   public function __construct($lang) {
      $this->lang = $lang;
   }
}

$yourClass = new YourClass($lang)
在您的函数中,尝试以下操作:

public function fetchByVinAxnmrss($con) {
     global $lang; // grab $lang here and use later
     $success = false;
     ......
}

我在你的代码中看不到OOP。基本上你在
\uuu-construct
中设置了
$this->lang
,而不是在其他方法中设置了
echo$this->lang;
@Justinas谢谢你的回答,但是请检查我的编辑,$lang是从包含的文件中获得的,而不是从constructor其他变量中获得的,它有什么变化吗?我已经给出了函数参数$con so是否有其他方法(编辑我的问题并在那里添加我的方法的开头…非常感谢,我多么希望避免使用全局变量。是否有其他方法?