我听到人们一直在谈论依赖注入和它的好处,但我真的不明白它.
我想知道它是否是"我一直将数据库连接作为参数传递"问题的解决方案.
我试过阅读维基百科上的条目,但这个例子是用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)
任何人都有良好的资源或只是洞察力,使方法和利益 - 水晶 - 清楚?
单元测试代码库时,我需要使用模拟对象的迹象是什么?
这会像在代码库中看到很多对其他对象的调用一样简单吗?
另外,我如何单元测试不返回值的方法?因此,如果我的方法返回void但打印到文件,我只是检查文件的内容吗?
模拟是针对外部依赖的,所以这就是一切,不是吗?文件系统,数据库,网络等......
我想显示一个按钮但处于禁用状态,以向用户显示他们已经保存了一个项目.
我目前使用的东西如下:
<%= 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&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选项来禁用该操作.但是,仍然会显示该按钮.如果条件为真,有没有办法让按钮处于禁用状态?
谢谢
我正在模型上运行RSpec测试并获取字符串方法的错误,例如:"index",downcase,"和"strip."任何想法为什么会这样,我如何解决它?
我有大约100个数据库(所有相同的结构,只在不同的服务器上),每个数据库大约有十几个表.大多数表都很小(比方说100MB或更少).偶尔会出现边缘情况,表格可能很大(比方说4GB +).
我需要在每个数据库的几乎每个表上运行一系列ALTER TABLE命令.主要是在结构中添加一些行,但是有一些更改,例如将一行从varchar更改为tinytext(反之亦然).还添加了一些新索引(但索引新行,而不是现有索引,所以假设这不是什么大问题).
我想知道这是多么安全,以及这个过程是否有任何最佳实践.
首先,我是否有可能破坏或删除表中的数据.我怀疑没有,但需要确定.
其次,我假设更大的表(4GB +),这可能是几分钟到几个小时的过程?
关于在我有兴趣学习的生产数据库上执行ALTER TABLE命令我应该知道的任何事情和一切.
如果知道任何值,我计划通过PHPMYADMIN发布命令.
谢谢 -
我试图让我的模拟停止在特定点上。我有我的起始位置、结束位置、我当前的速度以及我想要到达那里的时间。自从:
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)
我想要一个不包含关键部分或类似同步替代方案的解决方案.我正在寻找类似于Windows的光纤(用户级线程)的东西.
我想完全消除HttpSession - 我可以在web.xml中这样做吗?我确信有容器特定的方法可以做到这一点(当我进行谷歌搜索时,搜索结果会出现这种情况).
PS这是个坏主意吗?在我真正需要它之前,我更喜欢完全禁用它们.
我在经纪人集群的ActiveMQ网络(也称为分布式主题)上有一个JMS主题.我有一个外部JMS使用者(Weblogic门户网站)需要订阅此主题并获取发送给它的所有消息(跨所有代理).
如果消费者在其中一个代理上订阅该主题,它只会获得代理收到的消息子集,对吗?
我想我可以为每个代理创建一个消费者并将消息聚合在一起,但是我也处理连接问题并且需要知道哪些代理可用等等.
问题,有没有办法配置代理网络或消费者从分布式JMS主题获取所有消息?
我不是100%肯定我是否应该在这里发布,但我还能在哪里发布它(绝对不是服务器故障或超级用户)所以希望它不是太不合适.
我目前正在开发一个脚本,我希望将其作为wordpress和其他开源内容管理系统的插件发布.该脚本的目的是允许Web设计人员根据访问者使用的浏览器动态地附加样式表和javascripts.因此,如果他们的网站在Chrome中看起来有点奇怪,那么他们可以为这一个浏览器附加css或javascript hack.脚本还会有更多功能,但这是主要目的.
无论如何,我想知道哪些浏览器包含支持,因为我需要知道哪一个给设计人员/开发人员带来了最大麻烦.不仅是名称,还有版本(即Internet Explorer 4).提前谢谢了!