草庐IT

php - 如何避免冲突用于依赖注入(inject)的 PHP 特性

我终于开始探索PHP中的特征。我想尝试的第一个地方是将配置位注入(inject)到类中。如果我使用DIC,我可能在任何需要配置对象的类中都有这样的代码:protectedfunctionSetConfig($config){$this->config=$config;}protected$config;这似乎很自然地适合traits以避免到处都是样板代码,所以我可能会创建这个:traitConfig{protectedfunctionSetConfig($config){$this->config=$config;}protected$config;}然后像这样使用它:classFoo

php - Symfony 依赖注入(inject)注入(inject)类的新实例

我正在使用symfony/dependency-injection组件(注意:没有使用完整的堆栈框架)注册新服务时,我想在构造函数中注入(inject)类的新实例。示例:$container->register('session','Vendor\Core\Session')->addArgument(newPhpBridgeSessionStorage());该示例运行良好,但如果我想使用yml文件来定义此服务怎么办?像这样的东西:services:session:class:Vendor\Core\Sessionarguments:[newClass\To\Inject]我是否被迫

php - 依赖注入(inject)中的默认值

我目前有一个具有紧密耦合依赖关系的类,并且类构造函数当前没有任何参数。我正在尝试能够有选择地传入不同的依赖项,而不更改构造函数签名,从而破坏当前使用该类的应用程序。我想到了这个模式:classCar{private$engine;publicfunction__construct($options=array()){if(isset($options['engine']){$this->engine=$options['engine'];}else{$this->engine=newEngine();}}}这样Car仍然可以使用newcar()创建(使用默认引擎),或者通过传入自定义引

php - Yii2 依赖注入(inject)示例

谁能给我指出在Yii2中使用DI容器的实际示例或教程的方向?我一定很厚,但是关于这个主题的2.0指南对我来说不是那么清楚。此外,我查看过的大多数在线教程和示例代码都充斥着Yii::$app单例,这使得测试变得困难。 最佳答案 例如,您有类\app\components\First和\app\components\Second实现一个接口(interface)\app\components\MyInterface您可以使用DI容器仅在一处更改类。例如:classFirstimplementsMyInterface{publicfunc

php - Symfony 服务注入(inject)语法

我正在开发由另一家公司实现的Symfony2应用程序,遇到了以下服务定义:service_id:class:'path\to\class'calls:-[setRequest,['@?request=']]我知道@?request=中的问号是什么意思(如果服务不存在,setRequest不会被调用),但是等号是什么意思在平均值的末尾?谢谢! 最佳答案 等号用于告诉容器忽略范围违规。request处于特殊范围内,如果您在不同的范围内使用它,容器将抛出异常。作用域在Sf2.8中被弃用并在Sf3.0中被移除。参见https://symfo

php - Symfony2 : Where to inject translation_domain in Form Component

我使用Symfony2的表单组件创建了一个表单。由于验证错误是在不同的翻译域中翻译的,我想在创建表单期间将此信息作为选项(translation_domain)注入(inject),但找不到正确的(成功的)位置来设置...有什么提示吗?我使用自定义类型来捆绑我的表单信息。我的自定义类型类:useSymfony\Component\Form\AbstractType;useSymfony\Component\Form\FormBuilderInterface;useSymfony\Component\OptionsResolver\OptionsResolverInterface;use

php - 对自定义类的依赖注入(inject)陷入 L4.2 中的无限循环?

我一直在更改我的Controller和帮助程序类以使用依赖项注入(inject),但我的帮助程序类似乎陷入了无限循环。下面是我的自定义ServiceProvider和两个示例助手类。如您所见,它们相互注入(inject),因此它们不断来回移动。这个问题的解决方案是什么?我似乎在犯什么错误?我该怎么做才能在模拟时对General和Person等辅助类运行测试从它们内部调用的辅助类?我认为可行的一种方法是在我的ServiceProvider中执行以下操作:if(isset($appmade->General)){//injecttheGeneralappthat'salreadyinsta

php - 防止sql注入(inject)的最佳实践是什么

我做了一些研究,但仍然很困惑,这是我的研究结果。有人可以评论并建议我如何改进它们,或者是否已经有可靠的实现可供我使用?方法一:array_map('trim',$_GET);array_map('stripslashes',$_GET);array_map('mysql_real_escape_string',$_GET);方法二:functionfilter($data){$data=trim(htmlentities(strip_tags($data)));if(get_magic_quotes_gpc())$data=stripslashes($data);$data=mysql

php - 注入(inject)攻击(我以为我被保护了!)<?php/**/eval(base64_decode(无处不在

我有一个完全自定义的PHP站点,其中包含大量数据库调用。我刚刚被注入(inject)黑客攻击。下面的这一小段代码出现在我的许多PHP页面中。我对我的SQL调用等非常小心;它们都是这种格式:$query=sprintf("UPDATESalesSET`Shipped`='1',`Tracking_Number`='%s'WHEREID='%s'LIMIT1;",mysql_real_escape_string($trackNo),mysql_real_escape_string($id));$result=mysql_query($query);mysql_close();郑重声明,我很

php - Laravel 5 - 方法注入(inject)

方法注入(inject)在Laravel5中如何工作(我的意思是实现),我可以在自定义方法中注入(inject)参数,而不仅仅是在Controller操作中吗? 最佳答案 1)阅读本文以了解更多关于laravel5中方法注入(inject)的信息http://mattstauffer.co/blog/laravel-5.0-method-injectionhttps://laracasts.com/series/whats-new-in-laravel-5/episodes/22)下面是方法注入(inject)的简单实现$param