小编Ada*_*ney的帖子

PHP缓冲区ob_flush()与flush()

ob_flush()flush()两个人之间有什么区别?

ob_flush()参考说:

此函数将发送输出缓冲区的内容(如果有).

flush()参考说:

刷新PHP的写缓冲区以及PHP正在使用的任何后端(CGI,Web服务器等).

但是,它继续说:

[它]可能无法覆盖您的Web服务器的缓冲方案......

所以,在我看来,我可以只使用ob_flush()所有的时间.但是,当我这样做时,我得到了奇怪的结果.有人可以用简单的语言解释这里发生了什么吗?

php flush output-buffering

76
推荐指数
4
解决办法
6万
查看次数

什么是PHP中的__halt_compiler?

手册:

void __halt_compiler ( void )
Run Code Online (Sandbox Code Playgroud)

该函数停止执行编译器.这对于在PHP脚本中嵌入数据非常有用,例如安装文件.

注意:__halt_compiler()只能从最外层范围使用.

任何人都可以提供这个功能有用的实际案例吗?

php

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

Symfony2 FOSUserBundle用户实体字段覆盖

我有覆盖实体的问题.我需要这个领域emailCanonical不是唯一的.

以下是我所做的:根据Doctrine2文档,UserBundle\Resources\config\doctrine\User.orm.xml我已经添加了以下attribute-overrides配置

<attribute-overrides>
    <attribute-override name="emailCanonical">
        <field column="email_canonical" unique="false" name="emailCanonical" />
    </attribute-override>
</attribute-overrides>
Run Code Online (Sandbox Code Playgroud)

然后我运行了以下控制台命令

$ php app/console doctrine:migrations:diff
$ php app/console doctrine:migrations:migrate
Run Code Online (Sandbox Code Playgroud)

一切都很好.emailCanonical是非独特的.但是现在,当我需要在其他项目包中生成一个实体时,我有一个奇怪的错误:

 $ php app/console doctrine:generate:entities SkyModelsBundle:Category
 Generating entity "Sky\Bundle\ModelsBundle\Entity\Category"

 [Doctrine\ORM\Mapping\MappingException]
 Invalid field override named 'emailCanonical' for class 'Sky\Bundle\UserBundle\Entity\User'.

 doctrine:generate:entities [--path="..."] [--no-backup] name
Run Code Online (Sandbox Code Playgroud)

但是,如果我从xml映射中删除覆盖设置,一切正常.

symfony doctrine-orm fosuserbundle

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

从php中的PKCS7签名中提取证书

我需要从pkcs7签名文件中提取用户证书.我可以使用以下命令通过命令行执行此操作:

openssl pkcs7 -in somesign.pks7 -inform PEM -print_certs
Run Code Online (Sandbox Code Playgroud)

这将为我提供整个证书链,我可以处理生成的文件以提取我想要的内容.

有没有办法用openssl_pkcs7_命令做到这一点?我看到openssl_pkcs7_verify有$ outfilename,其中将存储证书,但我没有签名的消息,但似乎$ filename应该同时具有签名和消息,这不是我的情况(签名是单独的文件).

php openssl signature smime pkcs#7

13
推荐指数
1
解决办法
2709
查看次数

为什么在PHP 7中调用可调用属性有效?

请考虑以下代码:

interface Doll
{
    /**
     * @return string
     */
    function __invoke();
}

class LargeDoll
{
    private $inner;

    function __construct(Doll $inner)
    {
        $this->inner = $inner;
    }

    function __invoke()
    {
        return $this->inner() . ' world';
    }
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为它期望$this->inner是一个方法,而不是一个可调用的属性.

然后它发生在我身上,就像有(new LargeDoll)();工作一样,如果财产也被包裹在paranthesis中呢?所以我在3v4l上测试了它:

return ($this->inner)() . ' world';
Run Code Online (Sandbox Code Playgroud)

并发现它适用于PHP 7,但不适用于以前的版本.

但是,我在更改日志中找不到任何提及.

我在哪里可以找到有关此功能的更多信息?

php php-7

7
推荐指数
1
解决办法
132
查看次数

如何在symfony2中使用一个按钮提交多个相同类型的表单

我有todolist,我显示三种形式的任务类型

$task1 = new Task();
$form1 = $this->createForm(new MyForm('f1'), $task1);

$task2 = new Task('fo');
$form2 = $this->createForm(new MyForm('f2'), $task2);

$task3 = new Task();
$form3 = $this->createForm(new MyForm('f3'), $task3);
Run Code Online (Sandbox Code Playgroud)

现在问题是我只有一个提交按钮.如何在一个控制器中保留这三个任务.用户也可以动态添加更多表单.

那么解决这个问题的方法是什么

symfony doctrine-orm

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

Twig:每年的每个月

这很奇怪.如果我使用{{ j }},我会得到所有12个数字,但添加Twig日期过滤器只是回响"Jan"12次.

我如何回应一年中的所有月份?我是否创建了一个数组?

<select>
{% for j in range(1, 12) %}
    <option>{{ j|date('M') }}</option>
{% endfor %}
</select>
Run Code Online (Sandbox Code Playgroud)

twig

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

如何在Twig中使用PHP模板引擎而不是Silex中的Twig语法

在Silex中,我可以使用Twig模板,但我想使用Twig的PHP引擎,而不是Twig语法.例如,本指南介绍了如何为Symfony而不是Silex执行此操作.

我的Silex index.php看起来像:

$app->register(new Silex\Provider\TwigServiceProvider(), array(
    'twig.path' => __DIR__.'/views',
));

$app->get('/', function() use ($app) {
    return $app['twig']->render('index.html.php', array(
        'name' => 'Bob',
    ));
});
Run Code Online (Sandbox Code Playgroud)

index.html.php看起来像:

<p>Welcome to the index <?php echo $view->name; ?></p>
Run Code Online (Sandbox Code Playgroud)

当我在浏览器中运行应用程序并查看源代码时,我看到了<?php echo $view->name; ?>尚未执行的文字字符串.

我怀疑可能有一个Twig配置设置告诉它我想使用PHP样式模板.为了澄清,如果我使用Twig语法,例如:

<p>Welcome to the index {{ name }} </p>
Run Code Online (Sandbox Code Playgroud)

然后它工作,我看到名称Bob,因此我知道这不是一个Web服务器或PHP配置问题.

php symfony twig silex

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

在Swift中,所有对象变量都应该是可选的吗?

Swift编程语言书不讨论这个,但是在Swift中所有对象变量都应该是可选的吗?因为从技术上讲,对象创建可能会失败并返回nil(如Objective-C的情况).那么Swift for Swift类中的所有对象变量(或者至少对于所有的Foundation类)都应声明为可选的吗?

let obj:NSData? = NSData()
Run Code Online (Sandbox Code Playgroud)

swift

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

使用Doctrine DataFixtures时,Symfony HttpFoundation UploadedFile“由于未知错误而未上传”

我一直在使用基于食谱食谱如何使用 Symfony 2.3中的Doctrine处理文件上传的附件实体。

即使在功能测试中,它也可以正常工作。但是,将它与Doctrine DataFixtures一起使用会引起我一些问题。

[Symfony\Component\HttpFoundation\File\Exception\FileException]
The file "o-rly-copy.jpg" was not uploaded due to an unknown error.

这没有帮助,但是我确实运行php app/console doctrine:fixtures:load -v了堆栈跟踪,并且似乎不是在持久化方法上抛出了异常,而是在$manager->flush()

Attachment::setFile()需要一个实例,UploadedFile所以我想知道是否有解决方法。

看来错误发生在225行 Symfony\Component\HttpFoundation\File\UploadedFile

return $this->test ? $isOk : $isOk && is_uploaded_file($this->getPathname())
Run Code Online (Sandbox Code Playgroud)

is_uploaded_file()返回的条件,false因为文件已在服务器上。

<?php

/**
 * Prepopulate the database with image attachments.
 */
final class AttachmentFixtures extends AbstractFixture implements OrderedFixtureInterface, ContainerAwareInterface
{
    private static $imageData = array(
        array(
            'name' => "O RLY?",
            'file' => "o-rly",
            'type' => "jpg", …
Run Code Online (Sandbox Code Playgroud)

symfony doctrine-orm is-uploaded-file symfony-2.3

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