This is a collection of questions that come up every now and then about syntax in PHP. This is also a Community Wiki, so everyone is invited to participate in maintaining this list.
It used to be hard to find questions about operators and other syntax tokens.¹
The main idea is to have links to existing questions on Stack Overflow, so it's easier for us to reference them, not to copy over content from …
我最近偶然发现了这段代码:
function xrange($min, $max)
{
for ($i = $min; $i <= $max; $i++) {
yield $i;
}
}
Run Code Online (Sandbox Code Playgroud)
我以前从未见过这个yield
关键字.试着运行我得到的代码
解析错误:语法错误,第x行意外的T_VARIABLE
那么这个yield
关键字是什么?它甚至是有效的PHP吗?如果是,我该如何使用它?
我想将数组打印到文件中.
我希望该文件看起来与这样的代码看起来完全相似.
print_r ($abc);
假设$ abc是一个数组.
是否有任何一行解决方案,而不是每个外观常规.
PS - 我目前使用序列化但我想使文件可读,因为序列化数组的可读性非常难.
我认为自从我安装XDebug以来我的服务器变得很慢.所以,为了测试我的假设,我想完全禁用XDebug.我一直在寻找有关如何做到这一点的教程,但我找不到这些信息.
PHP接口允许在接口中定义常量,例如
interface FooBar
{
const FOO = 1;
const BAR = 2;
}
echo FooBar::FOO; // 1
Run Code Online (Sandbox Code Playgroud)
任何实现类都将自动提供这些常量,例如
class MyFooBar implement FooBar
{
}
echo MyFooBar::FOO; // 1
Run Code Online (Sandbox Code Playgroud)
我对此的看法是,任何Global都是邪恶的.但我想知道接口常量是否同样适用.鉴于对接口的编码通常被认为是良好的做法,使用接口常量是在类上下文之外使用的唯一常量吗?
虽然我很想听听您的个人意见以及您是否使用界面常量,但我主要是在您的答案中寻找客观原因.我不希望这是一个民意调查问题.我对使用接口常量对可维护性有什么影响感兴趣.耦合.或单元测试.它与SOLID PHP有什么关系?它是否违反了任何被认为是PHP良好实践的编码原则?你明白了......
注意: Java有一个类似的问题列出了一些很好的理由,说明它们是Bad Practice,但由于Java不是PHP,我认为再次在PHP标记中提出它是合理的.
我正在寻找一个PHP函数,它将清理一个字符串,并准备用于文件名.谁知道一个方便的?
(我可以写一个,但我担心我会忽略一个角色!)
编辑:用于保存Windows NTFS文件系统上的文件.
我刚安装了石墨/ statsd用于生产用途.我真的很高兴,但我的一位同事问我是否有办法让它看起来更漂亮.老实说,我不能说我也不奇怪.
有没有替代Graphite UI可以更好地渲染数据,可能使用了一个很棒的前端图形库和http推送?
正如我们所用
<a href="tel:number">number</a> or <a href="mailto:mailid>mailid</a>
Run Code Online (Sandbox Code Playgroud)
对于电话号码和电子邮件,是否<a href="fax:number">number</a>
存在传真等问题?
我正在以下列方式创建表单:
$form = $this->createFormBuilder($breed)
->add('species', 'entity', array(
'class' => 'BFPEduBundle:Item',
'property' => 'name',
'query_builder' => function(ItemRepository $er){
return $er->createQueryBuilder('i')
->where("i.type = 'species'")
->orderBy('i.name', 'ASC');
}))
->add('breed', 'text', array('required'=>true))
->add('size', 'textarea', array('required' => false))
->getForm()
Run Code Online (Sandbox Code Playgroud)
如何为物种列表框设置默认值?
谢谢你的回复,我道歉,我想我应该重新解释一下我的问题.一旦我有一个从模型中检索的值,如何为物种选择列表中的相应值将该值设置为SELECTED ="yes"?
因此,TWIG视图中的选择选项输出将如下所示:
<option value="174" selected="yes">Dog</option>
Run Code Online (Sandbox Code Playgroud) 我正在设计一个类,我希望在主线程完成配置之后只读它,即"冻结"它.Eric Lippert将这种冰棍称为不变性.冻结后,可以同时访问多个线程进行读取.
我的问题是如何以线程安全的方式编写这个实际有效的方法,即不要试图不必要地聪明.
尝试1:
public class Foobar
{
private Boolean _isFrozen;
public void Freeze() { _isFrozen = true; }
// Only intended to be called by main thread, so checks if class is frozen. If it is the operation is invalid.
public void WriteValue(Object val)
{
if (_isFrozen)
throw new InvalidOperationException();
// write ...
}
public Object ReadSomething()
{
return it;
}
}
Run Code Online (Sandbox Code Playgroud)
Eric Lippert似乎认为这篇文章可以.我知道写入具有释放语义,但据我所知,这仅适用于排序,并不一定意味着所有线程都会在写入后立即看到该值.谁能证实这一点?这意味着这个解决方案不是线程安全的(当然这可能不是唯一的原因).
尝试2:
以上,但Interlocked.Exchange
用于确保实际发布的值:
public …
Run Code Online (Sandbox Code Playgroud)