问题列表 - 第21284页

如何在简单的PHP函数中使用"依赖注入",我应该打扰吗?

我听到人们一直在谈论依赖注入和它的好处,但我真的不明白它.

我想知道它是否是"我一直将数据库连接作为参数传递"问题的解决方案.

我试过阅读维基百科上的条目,但这个例子是用Java编写的,所以我不能完全理解它试图弄清楚它的区别.(http://en.wikipedia.org/wiki/Dependency_injection).

我读了这篇依赖注入的php文章(http://www.potstuck.com/2009/01/08/php-dependency-injection/),似乎目标是不将依赖项传递给对象直接,但封锁对象的创建以及它的依赖关系的创建.不过,我不知道如何在使用php函数上下文中应用它.

另外,是以下的依赖注入,我是否应该尝试在功能上下文中进行依赖注入?

版本1 :(我创建的代码类型,但每天都不喜欢)

function get_data_from_database($database_connection){
    $data = $database_connection->query('blah');
    return $data;
}
Run Code Online (Sandbox Code Playgroud)

版本2 :(不必传递数据库连接,但可能不是依赖注入?)

function get_database_connection(){
    static $db_connection;
    if($db_connection){
        return $db_connection;
    } else {
        // create db_connection
      ...
    }
}

function get_data_from_database(){
   $conn = get_database_connection();
   $data = $conn->query('blah');
   return $data;
}

$data = get_data_from_database();
Run Code Online (Sandbox Code Playgroud)

版本3 :("对象"/数据的创建是独立的,数据库代码仍然是,所以这可能算作依赖注入?)

function factory_of_data_set(){
    static $db_connection;
    $data_set = null;
    $db_connection = get_database_connection();
    $data_set = $db_connection->query('blah');
    return $data_set;
}

$data = factory_of_data_set();
Run Code Online (Sandbox Code Playgroud)

任何人都有良好的资源或只是洞察力,使方法和利益 - 水晶 - 清楚?

php dependency-injection parameter-passing

67
推荐指数
3
解决办法
3万
查看次数

单元测试void方法/模拟对象告诉标志

单元测试代码库时,我需要使用模拟对象的迹象是什么?

这会像在代码库中看到很多对其他对象的调用一样简单吗?

另外,我如何单元测试不返回值的方法?因此,如果我的方法返回void但打印到文件,我只是检查文件的内容吗?

模拟是针对外部依赖的,所以这就是一切,不是吗?文件系统,数据库,网络等......

unit-testing mocking

6
推荐指数
1
解决办法
2449
查看次数

rails button_to:disabled => true仍显示按钮

我想显示一个按钮但处于禁用状态,以向用户显示他们已经保存了一个项目.

我目前使用的东西如下:

<%= button_to 'Save', :disabled => item.is_saved? %>
Run Code Online (Sandbox Code Playgroud)

生成的html看起来像:

<form class="button-to" action="/results/save_item/748?class=buttons&amp;disabled=true" method="post"> 

<div><input type="submit" value="Save">
<input type="hidden" value="+TKyrnA9idfmCkwDycLjHIkSLNou6NMt8R4TI73RezU=" name="authenticity_token">
</div>
</form>
Run Code Online (Sandbox Code Playgroud)

这会通过设置disabled = true选项来禁用该操作.但是,仍然会显示该按钮.如果条件为真,有没有办法让按钮处于禁用状态?

谢谢

ruby-on-rails

13
推荐指数
2
解决办法
2万
查看次数

当我在模型上运行RSpec时,为什么会出现"strip"和"downcase"的未定义方法错误?

我正在模型上运行RSpec测试并获取字符串方法的错误,例如:"index",downcase,"和"strip."任何想法为什么会这样,我如何解决它?

ruby testing rspec

6
推荐指数
1
解决办法
2万
查看次数

关于生产数据库的MySql ALTER TABLE - 有任何问题吗?

我有大约100个数据库(所有相同的结构,只在不同的服务器上),每个数据库大约有十几个表.大多数表都很小(比方说100MB或更少).偶尔会出现边缘情况,表格可能很大(比方说4GB +).

我需要在每个数据库的几乎每个表上运行一系列ALTER TABLE命令.主要是在结构中添加一些行,但是有一些更改,例如将一行从varchar更改为tinytext(反之亦然).还添加了一些新索引(但索引新行,而不是现有索引,所以假设这不是什么大问题).

我想知道这是多么安全,以及这个过程是否有任何最佳实践.

首先,我是否有可能破坏或删除表中的数据.我怀疑没有,但需要确定.

其次,我假设更大的表(4GB +),这可能是几分钟到几个小时的过程?

关于在我有兴趣学习的生产数据库上执行ALTER TABLE命令我应该知道的任何事情和一切.

如果知道任何值,我计划通过PHPMYADMIN发布命令.

谢谢 -

mysql alter-table

12
推荐指数
1
解决办法
1350
查看次数

计算出以 0 速度撞击目标位置的加速度?

我试图让我的模拟停止在特定点上。我有我的起始位置、结束位置、我当前的速度以及我想要到达那里的时间。自从:

d = vt + (at^2)/2
Run Code Online (Sandbox Code Playgroud)

我在想

d = (end - start)
a = 2(d - vt) / t^2
Run Code Online (Sandbox Code Playgroud)

但当我运行它时,我的终点还很遥远。我尝试使用两个简单的更新,首先:

v += a * dt
d += v * dt
Run Code Online (Sandbox Code Playgroud)

第二:

d += v * dt + a * dt * dt / 2;
v += a * dt;
Run Code Online (Sandbox Code Playgroud)

如果这很重要的话。在这种情况下,位置是 1d,所以不需要疯狂的矢量东西。任何帮助将不胜感激:) 谢谢!

(编辑:格式化)(编辑2:更正更新#2)(编辑3:更新现在显示 dt 而不是 t)

language-agnostic math physics

5
推荐指数
1
解决办法
1203
查看次数

如何强制两个Java线程在同一处理器/核心上运行?

我想要一个不包含关键部分或类似同步替代方案的解决方案.我正在寻找类似于Windows的光纤(用户级线程)的东西.

java multithreading

3
推荐指数
1
解决办法
3891
查看次数

我可以关闭web.xml中的HttpSession吗?

我想完全消除HttpSession - 我可以在web.xml中这样做吗?我确信有容器特定的方法可以做到这一点(当我进行谷歌搜索时,搜索结果会出现这种情况).

PS这是个坏主意吗?在我真正需要它之前,我更喜欢完全禁用它们.

java session web.xml web-applications

55
推荐指数
3
解决办法
5万
查看次数

具有ActiveMQ经纪人网络的JMS消费者

我在经纪人集群的ActiveMQ网络(也称为分布式主题)上有一个JMS主题.我有一个外部JMS使用者(Weblogic门户网站)需要订阅此主题并获取发送给它的所有消息(跨所有代理).

如果消费者在其中一个代理上订阅该主题,它只会获得代理收到的消息子集,对吗?

我想我可以为每个代理创建一个消费者并将消息聚合在一起,但是我也处理连接问题并且需要知道哪些代理可用等等.

问题,有没有办法配置代理网络或消费者从分布式JMS主题获取所有消息?

java activemq-classic jms

5
推荐指数
1
解决办法
1412
查看次数

哪些Web浏览器提供最不兼容的问题?

我不是100%肯定我是否应该在这里发布,但我还能在哪里发布它(绝对不是服务器故障或超级用户)所以希望它不是太不合适.

我目前正在开发一个脚本,我希望将其作为wordpress和其他开源内容管理系统的插件发布.该脚本的目的是允许Web设计人员根据访问者使用的浏览器动态地附加样式表和javascripts.因此,如果他们的网站在Chrome中看起来有点奇怪,那么他们可以为这一个浏览器附加css或javascript hack.脚本还会有更多功能,但这是主要目的.

无论如何,我想知道哪些浏览器包含支持,因为我需要知道哪一个给设计人员/开发人员带来了最大麻烦.不仅是名称,还有版本(即Internet Explorer 4).提前谢谢了!

javascript css browser incompatibility

2
推荐指数
1
解决办法
233
查看次数