草庐IT

构造器

全部标签

php - 在 Controller 构造函数中加载 CodeIgniter 模型

来自C#/.NETMVC3/4,我不太习惯CodeIgniter的模型实现。文档显示了在Controller方法中加载的模型,但是我几乎在每个方法中都使用了该模型,并且我的模型通过其构造函数将其方法中使用的数据存储在属性中。有什么理由不在我忽略的Controller构造函数中实例化模型吗? 最佳答案 您也可以通过以下方式加载模型:意味着如果您的模型在任何文件夹中,那么使用以下代码您可以在Controller中加载模型。$this->load->model('modelFolder/'.$this->controller.'_mode

php - Laravel 自定义控制台命令调用所有其他自定义命令的构造函数

我在app/Console/Kernel.php中注册了一组控制台命令。我的Kernel.php看起来像,控制台命令类的结构如下所示,dependancy=$dependancy;}publicfunctionhandle(){//Somecode}}现在的问题是,每当我执行列表中的任何控制台命令时,另一个命令的构造函数也会与实际执行的命令一起执行。例如,如果我执行“phpartisanconsole_command_1”,“phpartisanconsole_command_1”和“phpartisanconsole_command_2”的构造函数都会被执行,反之亦然。我实际上只想调

php - 如何最好地处理构造函数中的异常?

如何在构造中以最佳方式处理异常?选项1-在创建对象时捕获异常:classAccount{function__construct($id){if(empty($id)){thrownewMy_Exception('idcan\'tbeempty');}//...}}classa1{functionjust($id){try{$account=newAccount($id);}catch(Exception$e){$e->getMessage();}}classa2{functionjust($id){try{$account=newAccount($id);}catch(Exceptio

php - 在 PHP 中使用对象函数调用链接构造函数

有谁知道下一个版本的PHP中是否可以使用以下表达式?(newA())->a();//Causesasyntaxerror我觉得很烦人,目前必须写2行而不是1行:$c=newA();$c->a(); 最佳答案 第一个版本不会导致解析错误,它是完全有效的。第二个是,确实不可能,但是你可以通过一些编码标准轻松克服这样的问题。如果每个团队成员都为每个定义的类创建一个与该类同名的函数,以及一个类似于类构造函数签名的签名,那么您就不会遇到第二个问题。示例:classFoo{publicfunction__construct($param){}p

php - 构造条件逻辑的最佳方法是什么?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭12年前。我想到有许多不同的方法来构造条件逻辑。据我所知,只要我们设置错误以结束脚本(或者您可以想象相同的示例但在函数中返回),那么以下示例是相同的:示例1if($condition1){trigger_error("Thescriptisnowterminated");}if($condition2){trigger_error("Thescriptisnowt

php - 为什么即使类和构造函数的大小写不同,我的构造函数仍然被调用?

我很惊讶为什么当我们有不同的类和构造函数名称时调用构造函数。构造函数名称以小“r”开头?classRegistration{functionregistration(){echo"Constructoriscalled.";}}$obj=newRegistration();//$obj->registration();输出:构造函数被调用。修改:这种不区分大小写的行为是否取决于我们使用的php版本? 最佳答案 php不区分大小写(有时)。以下内容也适用:CLASSREGISTRATION{FUNCTIONreGISTration()

php - 如何取消引用构造函数?

理想情况下,我想做这样的事情....$formElement->addValidator((newRegexValidator('/[a-z]/'))->setErrorMessage('Error')//setErrorMessage()returns$this);当然PHP不允许这样做,所以我满足于此...$formElement->addValidator(RegexValidator::create('/[a-z]/')->setErrorMessage('Error'));还有基类中的代码....staticpublicfunctioncreate($value){retur

php - Mockery 和 Laravel 构造函数注入(inject)

我正在使用带有php单元的laravel5来创建一个laravel包。我有一个Repository..namespaceMyname\Myapp\Repositories;useMyname\Myapp\Models\PersonModel;classPersonRepository{protected$personModel;publicfunction__construct(PersonModel$personModel){$this->personModel=$personModel;}publicfunctiontestFunction($var){return$this->p

php - 模拟 php 数组语言构造或使用正则表达式解析?

从外部来源我得到类似的字符串array(1,2,3)还有一个更大的数组,比如array("a","b","c",array("1","2",array("A","B")),array("3","4"),"d")我需要它们成为php中的实际数组。我知道我可以使用eval但由于它是不受信任的来源,我宁愿不这样做。我也无法控制外部资源。我应该为此使用一些正则表达式(如果是,是什么)还是有其他方法? 最佳答案 虽然使用Tokenizer编写解析器并不像我预期的那么容易,但我想到了另一个想法:为什么不使用eval解析数组,但首先要验证它不包含

PHP:在构造函数中使用 $this

我想在php中使用这种语法。它说明了创建对象有不同的回退方式function__construct(){if(some_case())$this=method1();else$this=method2();}这是一场噩梦吗?还是有效? 最佳答案 Oritworks?这是行不通的。您不能取消设置或从根本上改变在构造函数中创建的对象。您也可以不设置返回值。您所能做的就是设置对象的属性。解决这个问题的一种方法是有一个单独的“工厂”类或函数,它检查条件并返回正确对象的新实例,如下所示:functionfactory(){if(some_ca