【问题标题】:How to set and access static variable outside of namespace in PHP Laravel如何在 PHP Laravel 中设置和访问命名空间之外的静态变量
【发布时间】:2017-06-13 02:12:12
【问题描述】:

我在命名空间 App\Http\Lib 中有一个 php 类作为 GISApplication,其中包含静态数据成员。我想从命名空间之外的不同类中设置和访问该静态数据成员的值。如何设置和访问该值。

<?php
namespace App\Http\Lib; 

class GISApplication
{
      public static $LOGINUSER_TYPE;
      public static $USERMODULE;

      // More Static Data Members

}

假设我想从 App\Http\Controllers 命名空间中的 LoginController 类中设置这些成员的值,并从 App\Http\Operations 命名空间中的不同类访问这些值。

我从 App\Http\Controllers 命名空间 AS 中的 LoginController 类中设置值

GISApplication::$LOGINUSER_TYPE = $auth->type;
GISApplication::$USERMODULE = $auth->module;

当我从 App\Http\Operations AS 中的 FrontOperation 类访问值时

GISApplication::$LOGINUSER_TYPE

我会得到空白值。

请提出建议。

【问题讨论】:

  • 从句法的角度来看应该没问题。检查 $auth->type 和 $auth->module 是否真的在赋值时返回非空白值,并检查你是否在赋值后访问静态变量。
  • @IvoHrádek :我已经检查了 $auth->type 和 $auth->module 中的值,两者都包含非空白字符串值。此外,我确信我在分配后访问变量。请提出我无法理解的任何更改。
  • 我也尝试过使用 getter 和 setter 方法,但没有运气。公共静态函数 setLoginUserType($UserType) { self::$LOGINUSER_TYPE = $UserType; } 公共静态函数 getLoginUserType() { return self::$LOGINUSER_TYPE; // "QWERTY";任何建议。很抱歉无法很好地格式化评论中的代码。

标签: php laravel


【解决方案1】:

PHP 中的静态变量在页面刷新/回发后不保留值。所以每次我尝试访问值时,我都会得到空白值。我从下面的链接得到了这个想法

How do I change a static variables value in PHP?

为了解决这个问题,我在 LoginController 中使用了 Session 变量作为

$_SESSION['LOGINUSERTYPE']  = $auth->type;
$_SESSION['USERMODULE'] = $auth->module;

要在不同的控制器中访问,只需使用

$user= $_SESSION['LOGINUSERTYPE'];

如果有其他合适的方式,请提出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 2021-04-19
    • 2014-01-31
    相关资源
    最近更新 更多