我有一种方法可以检查用户的角色是否是管理员,如果不是,则使用returnredirect('/')->send();重定向他们。如何在不显示页面并等待重定向的情况下检查用户角色并重定向用户?我的Controller:classAdminControllerextendsController{publicfunction__construct(){if(Auth::check()){$user=Auth::user();if($user->role!='admin'){returnredirect('/')->send();}}else{returnredirect('/')->send
是否有可能-在PHP中-“禁用”覆盖类构造函数的功能?只是为了让场景更清晰:我有一个带有构造函数的抽象类A。这个构造函数对于类的工作是必不可少的。然后我有一些“sibling”,它们“扩展”了抽象类A。他们-显然-必须扩展那个类,但我不希望他们接触构造函数。我知道可以调用parent::__construct(),但那样我就不会强制使用该模式。如果我的一位同事正在实现一个扩展我的抽象类的新类,我不希望出现混淆。当然,所有内容都已记录在案,但你们都知道阅读内容时的情况;-)关于如何禁用构造函数的覆盖有什么想法吗?(在那种情况下,我会创建一个可以覆盖的抽象init()方法,但我的“抽象构造
我想告诉我的函数根据星期几调用哪个变量。星期几存储在$s_day中,我要调用的变量根据它是哪一天而变化。例如我在$d_monday_text1中存储了一个字符串'Welcometotheweek'。我可以通过连接变量?$s_day=date("l");$text1='$d_'.$s_day.'_text1';我希望它的计算结果为$d_monday_text1,如上所述,它的值为“Welcometotheweek”。所以,稍后我想使用:echo$text1;产生结果输出=欢迎来到这一周。我研究了可变变量,这可能是去这里的方法,但我在语法上苦苦挣扎。我可以让它回显连接的名称,但我不知道如何
好吧,我是单元测试(使用phpUnit)的新手,刚开始测试我的一个类。实际构造函数如下所示:/***Loadsconfiguration.*/function__construct(){$config=Kohana::$config->load('koffee');$this->_table_name=$config->table_name;$this->_table_columns=$config->table_columns;}它基本上是从另一个文件获取配置并将其设置为该对象的protected属性。这是单元测试的样子(它还没有完成,这就是我需要帮助的地方):/***Teststh
我正在使用CI的AuthTank库查询特定用户的记录。变量$user_id=tank_auth->get_user_id();从session中获取用户ID。我想在user_id=$user_id处提取记录。据我了解,构造函数可以在每次启动类时加载变量。有点像全局变量。所以我想我会在模型构造函数中设置我的$user_id,这样我就可以将它用于模型类中的多个函数。classMy_modelextendsModel{functionMy_model(){parent::Model();$user_id=$this->tank_auth->get_user_id();}functionpos
我最近读到在构造函数中使用关键字“new”是非常不受欢迎的,但我不确定我是否理解为什么?例如,如何:classA{public$foo;function__construct(){$this->foo=newBar();}}任何不同于:classA{publicfunctionsomeMethod(){$foo=newBar();}}??? 最佳答案 这确实是依赖注入(inject)背后的理论。并不是说使用“new”本身就是个坏主意。相反,通过在您的类内部实例化对象,您正在创建硬依赖关系,如果不更改类本身,这些依赖关系将永远无法更改
我创建了一个组件classCompextendsCApplicationComponent并在main.php中定义它目前我正在将值传递给它的构造函数作为$comp=newComp($value);.是否可以使用Yii::app()->comp调用其构造函数? 最佳答案 在Yii1.1中没有方便的方法来做到这一点-每个组件都应该是IApplicationComponent的实例,在公共(public)属性中进行配置,在init()中进行实际初始化。这就是为什么有这么多Yii扩展,它们是通用PHP库的简单包装器-您需要为每个不遵循Yi
我正在尝试调用父类构造函数但它抛出错误fatalerror:无法调用构造函数同样的代码之前运行良好,我没有做任何更改,但突然不知道会发生什么,它抛出了这个错误。我在stackoverflow上阅读了一些答案,但他们说您的父类不包含构造函数,好吧,这不是我的情况,我的父类中有构造函数。这是我的代码:classDB{var$con;publicfunction__construct(){require_once'configs/dbconfig.php';$this->connect();}functionconnect(){try{$this->con=newPDO('mysql:hos
我试图在Controller构造函数中访问auth()->user(),但它总是返回null。我在下面尝试过,但没有成功!protected$user;function__construct(){$this->middleware(function($request,$next){$this->user=auth()->user();return$next($request);});}有什么办法吗?--谢谢 最佳答案 ControllerConstructor在Middlewares之前被调用。所以在Constructor()中无法
假设你有这个:现在,如果您有一个将Type接口(interface)作为构造函数依赖项的抽象类,如下所示:为什么PHP允许您像这样在具体类上重载构造函数:但它不允许您对方法执行相同的操作,只能对构造函数执行此操作—如果您尝试对非构造函数方法执行此操作,PHP会抛出一个严格标准错误吗? 最佳答案 请阅读:OverridemethodparameterwithchildinterfaceasanewparameterTL;DR:如果您使用较窄类型重载方法参数类型,方法签名会更改并与父方法不兼容。您不能用任意子类替换TypeUser的实例