草庐IT

构造器

全部标签

php - 无法将类实例传递给构造函数

我有一个Usereloquent模型,它在其构造函数中接受了UserMailer类的一个实例,但我得到了这个错误Argument1passedtoUser::__construct()mustbeaninstanceofTrainerCompare\Mailers\UserMailer,nonegiven,calledin/var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.phponline631anddefined我理解这个错误,但无法弄清楚我做错了什么,但我不太了解命名空间和Compose

子类中构造函数调用的php覆盖方法

我正在研究几个类来理解父子之间的关系。我将父级设置为具有调用init方法的构造函数。然后当我给child添加一个初始化方法时,它应该覆盖父初始化,不是吗?但实际情况是两种方法都被调用了。为了对此进行测试,我编写了一个名为Model的类和一个名为Instance的子类。这是代码:$try=newInstance;echo$try;classModel{publicfunction__construct(){$this->init();}publicfunctioninit(){return$this->className();}publicfunction__toString(){ret

PHP 依赖注入(inject) - 在构造函数中包含类名

我是OO的新手,但正在四处阅读并尝试学习以“正确”的方式做事。我一直在阅读依赖注入(inject),并且可以理解为什么它是一件好事,但是我对语法并不完全清楚。例如看这个BasicPHPObjectOrientedInstantiationandDependencyInjection关于SO的问题我复制了完全相同的代码(按照答案建议进行更改)然后打印出方法返回的内容:$author=newAuthor('Mickey','Mouse');print$author->getFirstName();$question=newQuestion('whatdayisit?',$author);p

php - 类构造函数创建具有变量名的新类字段?

关闭。这个问题是notreproducibleorwascausedbytypos.它目前不接受答案。这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助future的读者。关闭7年前。Improvethisquestion我正在尝试使用PHP5.5.13通过构造函数初始化一个类,但得到了一些奇怪的结果。设置是这样的:classfoo{public$bar;public$top;public$bot=array();function__construct($bar,$top){$this->$bar=$bar;$thi

php - 从 php 扩展调用对象构造函数 (__construct)

我正在试验一个PHP扩展,我想知道在扩展中调用对象构造函数的建议/首选方法是什么。我读到过,通过调用object_init_ex函数,不会自动调用该对象的构造函数。从我所做的测试来看,这似乎也是如此。假设我有以下代码,其中“Person”是一个有效的类名:zend_class_entry*class_entry=NULL;zend_string*class_name=zend_string_init("Person",sizeof("Person")-1,false);class_entry=zend_lookup_class(class_name);if(class_entry!=N

php - 当父级公开时,如何将子构造函数设为私有(private)?

为什么不能在子类中隐藏构造函数?我收到以下异常:Fatalerror:AccessleveltoCIS\Logger\WPLogger::__construct()mustbepublic(asinclassKatzgrau\KLogger\Logger)in/builds/r2o/website/wp-content/mu-plugins/toolsets/lib/cis-logger/src/WPLogger.phponline12父类(superclass)代码(来自外部库):publicfunction__construct($logDirectory,$logLevelThr

构造函数

publicfunction__construct($input=null){if(empty($input)){returnfalse;}然后是一些构造函数代码...如果我传递一个空变量,我想做的是让类不初始化$classinstance=newmyClass();我希望$classinstance为空(或假)我认为这是不可能的,有什么简单的方法可以实现类似的结果? 最佳答案 您可以将普通构造函数设为私有(private)(因此它不能从对象外部使用,就像您创建Singleton一样)并创建一个FactoryMethod.class

php 扩展但有一个新的构造函数......可能吗?

我有一个类:classtest{function__construct(){print'hello';}functionfunc_one(){print'world';}}我想做的是拥有一个扩展测试类的类。我说“有点”,因为该类需要能够运行测试类能够运行的任何功能,但除非我要求,否则不要运行构造。我不想覆盖构造。任何人都知道如何实现这一点? 最佳答案 classtest{function__construct(){print'hello';}functionfunc_one(){print'world';}}classtest_2e

php - 构造函数没有被调用

我的一门课有一个奇怪的问题。下一节课namespaceCore;classRequestHandler{protected$app;publicfunctionRequestHandler($app){echo"EEE";$this->app=$app;}}初始化是$requestHandler=newCore\RequestHandler($app);我不知道为什么它不显示任何内容,但如果我将构造函数更改为__construct一切正常。我使用的是php5.6.20,我知道它也应该按名称执行构造函数。 最佳答案 检查示例here:

php - 如何对构造函数接受一些参数的类的方法进行单元测试?

我有一类这样的表单:classA{publicfunction__constructor(classBb,classCc){//}publicfunctiongetSum(var1,var2){returnvar1+var2;}}我的测试用例类是这样的:useA;classATestextendsPHPUnit_Framework_TestCase{publicfunctiontestGetSum{$a=newA();$this->assertEquals(3,$a->getSum(1,2));}}但是当我运行phpunit时,它会抛出一些错误,例如:在第5行的/../A.php中调用