我们正在考虑创建我们自己common的实体映射和服务包,以便在几个单独的应用程序中使用.捆绑包应该易于修改,运行,包含和测试.我知道构建捆绑包的最佳实践,但我不知道git在开发时使用什么策略.
我们应该创建commonbundle作为一个整体项目并将整个存储库提交给我们的git服务器,还是最好只为commonbundle的root启动源代码控制并仅推送其内容?我在捆绑包中看到了这种方法github,但我不知道以这种方式开发捆绑包的简单方便.
我正在尝试使用Curl连接到某些外部公司提供的服务来收集一些数据.除了解决问题之外,他们还向我发送了p12建立连接所需的证书文件.
当我尝试使用它时curl,我收到以下错误:
#58: not supported file type 'P12' for certificate
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经尝试更新curl和php-curl.没有改变.
我的代码:
...
curl_setopt($ch, CURLOPT_SSLCERT, 'cert_path');
curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'P12');
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'my_pass');
...
Run Code Online (Sandbox Code Playgroud)
有趣的是,这段代码适用于我们的生产环境,而它不适用于我的本地机器(Linux Mint 16).
我有一个模板,我在其中:
<#if result.numFound > 10>
(some data)
</#if>
Run Code Online (Sandbox Code Playgroud)
这给了我解析错误:
For "#if" condition: Expected a boolean, but this evaluated to a number
Run Code Online (Sandbox Code Playgroud)
result.numFound是Integer.我已经阅读了文档,也许我错过了一些东西......
通常的显示方式select是打电话
{{ form_row(form.doctor_service_id, {'attr':{'class':'form-control'}}) }}
Run Code Online (Sandbox Code Playgroud)
我想做两件事:
twig迭代器是如何工作的,我只是不知道如何访问select选项并将它们转换为它.我正在使用PHPUnit 3.6.10(遗憾的是我目前无法升级到更新的版本).在处理一些遗留代码的模拟时,我得到了一个奇怪的错误.尝试谷歌,只有与静态方法相关的结果出现了,这不是我的情况.
有这个课程:
class ServicesMapper extends DbMapper
{
//... (some methods)
public function saveTravel(ServiceTravel $oTravel) {
$this->getAdapter()->insert('services_travels', $oTravel->getToArray());
}
//... (some methods)
}
Run Code Online (Sandbox Code Playgroud)
我试着嘲笑它:
(内部单元测试类)
/**
* @return ServicesMapper
*/
private function getServicesMapperStub()
{
$stub = $this->getMock('ServicesMapper');
$stub->expects($this->any())
->method('searchBy')
->will($this->returnValue(array()));
return $stub;
}
Run Code Online (Sandbox Code Playgroud)
现在,在运行这个假测试时(我知道这个测试什么都不做,这只是为了显示问题):
/**
* @test
*/
public function fakeMockTest(){
$serviceMapper = $this->getServicesMapperStub();
$this->assertTrue(true);
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Declaration of Mock_ServicesMapper_60b00178::saveTravel()
should be compatible with ServicesMapper::saveTravel(ServiceTravel $oTravel)
Run Code Online (Sandbox Code Playgroud)
我在很多地方使用这种嘲讽方式,除了这种特殊情况外,它运作良好.我的代码出了什么问题?
顺便说一句:我也试图用嘲弄saveTravel方法解决这个问题,没有运气.
在由独立控制器呈现的Twig部分呈现中,我想检查当前主路由是否等于比较路由,因此我可以将列表项标记为活动.
我怎样才能做到这一点?试图在BarController中获取当前路线,如:
$route = $request->get('_route');
Run Code Online (Sandbox Code Playgroud)
回报null.
Uri也不是我想要的,因为在下面的代码中调用代码bar:
app.request.uri
Run Code Online (Sandbox Code Playgroud)
返回类似于的路线: localhost/_fragment?path=path_to_bar_route
完整的例子
主控制器:FooController扩展Controller {
public function fooAction(){}
}
Run Code Online (Sandbox Code Playgroud)
fooAction树枝:
...some stuff...
{{ render(controller('FooBundle:Bar:bar')) }}
...some stuff...
Run Code Online (Sandbox Code Playgroud)
酒吧控制器:
BarController extends Controller{
public function barAction(){}
}
Run Code Online (Sandbox Code Playgroud)
barAction树枝:
<ul>
<li class="{{ (item1route == currentroute) ? 'active' : ''}}">
Item 1
</li>
<li class="{{ (item2route == currentroute) ? 'active' : ''}}">
Item 2
</li>
<li class="{{ (item3route == currentroute) ? 'active' : ''}}">
Item 3
</li>
</ul>
Run Code Online (Sandbox Code Playgroud) 我们尝试在我们公司的 ERP 中实现基于长轮询的通知服务。类似于 Facebook 通知。
使用的技术:
timeout设置为 60 秒和 1 秒sleep。经过近一个月的编码,我们进入了生产阶段。部署几分钟后,我们不得不回滚一切。事实证明,我们的服务器(8 核)无法处理来自 20 名员工的长请求,每个员工使用约 5 个浏览器选项卡。例如:用户使用我们的 ERP 打开了 3 个选项卡,每个选项卡上都有一个长轮询 AJAX。打开第 4 个选项卡是不可能的 - 它会挂起,直到前 3 个选项卡中的一个被杀死(因此 AJAX 停止)。
“Apache 的局限性”,我们认为。所以我们去谷歌搜索。我找到了一些关于 Apache 的 MPM 模块和配置的信息,所以我试了一下。我们的服务器使用preforkMPM,apachectl -l如图所示。所以我在配置中更改了几行,看起来像这样:
<IfModule mpm_prefork_module>
StartServers 1
MinSpareServers 16
MaxSpareServers 32
ServerLimit 50%
MaxClients 150
MaxClients 50%
MaxRequestsPerChild 0
</IfModule>
Run Code Online (Sandbox Code Playgroud)
有趣的是,它可以在我的本地机器上使用类似的配置运行。在服务器上,看起来 Apache 忽略了配置,因为MinSpareServers设置为 16,它在重新启动后启动 8。当他不知道该怎么做。
我从迁移PHP到Java和Spring。我注意到Spring,即使它是很棒的框架,也会遗漏其他平台上其他框架中捆绑的东西。我最怀念的一个是使用专用构建器构建表单的能力,而无需编写一行html.
/**
* Controller class
*/
public function newAction(Request $request)
{
// create a task and give it some dummy data for this example
$task = new Task();
$task->setTask('Write a blog post');
$task->setDueDate(new \DateTime('tomorrow'));
$form = $this->createFormBuilder($task)
->add('task', 'text')
->add('dueDate', 'date')
->add('save', 'submit', array('label' => 'Create Post'))
->getForm();
return $this->render('AcmeTaskBundle:Default:new.html.twig', array(
'form' => $form->createView(),
));
}
Run Code Online (Sandbox Code Playgroud)
有了这段代码,我所要做的就是在我的视图中调用form(实际上是表单的toString()方法,但适当的twig插件会处理它)。HTML 是动态生成和填充的:
{{ form(form) }} …Run Code Online (Sandbox Code Playgroud) 我正在使用Spring Boot和Spring Data JPA.
有以下课程:
import org.springframework.transaction.annotation.Transactional;
@Transactional(propagation = Propagation.REQUIRED)
public class Foo{
public void bar(){}
}
Run Code Online (Sandbox Code Playgroud)
会bar()和任何其他成员方法也是交易?
我还有第二个问题.在许多教程中,人们倾向于做这样的事情:
import org.springframework.transaction.annotation.Transactional;
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
public class Foo{
@Transactional(propagation = Propagation.REQUIRED, readOnly = false)
public void bar(){}
}
Run Code Online (Sandbox Code Playgroud)
为什么?使用readOnly true和false安全问题?
我有一个有大桌子的网站,它非常高,因此要进入水平滚动条我必须滚动到页面底部.
反正有没有水平滚动条漂浮在窗口的底部,总是可以访问,而不必先滚动到网页的底部?