我正在学习Zend Framework 2.当我按Ctrl + Shift + F
组合自动格式代码的键时,它显示不喜欢Zend Framework 2编码约定。
请告诉我一种简单的方法自动格式化代码遵循 Eclipse 4.4 Luna PDT中的Zend Framework编码惯例 ( PHP开发工具)。
答案 0 :(得分:1)
我曾经使用Eclipse和PDT一段时间。然后我切换到另一个IDE。无论如何,在Eclipse中,您可以编辑autoformat的工作方式。您可以在窗口 - >编辑Autoformat。 偏好设置,然后在 PHP 下 - >> 代码风格。对我来说,它从一开始就与Zend Framework 2一起运作良好。
在那里,您还可以找到导出/导入设置的可能性。我刚出口我的。 您可以将以下代码保存为.xml,然后将其导入到您能够编辑设置的相同位置。希望这可能会对你有所帮助。
不要忘了,首先要备份你的,只是为了确定。 (我使用Eclipse 4.2.2& PDT 3.1.1)代码模板的XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="php_gettercomment_context" deleted="false" description="Comment for getter methods" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.gettercomment" name="gettercomment">/**
* @return the ${bare_field_name}
*/</template><template autoinsert="true" context="php_settercomment_context" deleted="false" description="Comment for setter methods" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.settercomment" name="settercomment">/**
* @param ${field_type} ${bare_field_name}
*/</template><template autoinsert="true" context="php_constructorcomment_context" deleted="false" description="Comment for created constructors" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.constructorcomment" name="constructorcomment">/**
* ${tags}
*/</template><template autoinsert="true" context="php_filecomment_context" deleted="false" description="Comment for created PHP files" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.filecomment" name="filecomment">/**
*
*/
</template><template autoinsert="true" context="php_typecomment_context" deleted="false" description="Comment for created types" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.typecomment" name="typecomment">/**
* @author ${user}
*
* ${tags}
*/</template><template autoinsert="true" context="php_fieldcomment_context" deleted="false" description="Comment for fields" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.fieldcomment" name="fieldcomment">/**
* @var ${field_type}
*/</template><template autoinsert="true" context="php_methodcomment_context" deleted="false" description="Comment for non-overriding methods" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.methodcomment" name="methodcomment">/**
* ${tags}
*/</template><template autoinsert="true" context="php_overridecomment_context" deleted="false" description="Comment for overriding methods" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.overridecomment" name="overridecomment">/* (non-PHPdoc)
* ${see_to_overridden}
*/</template><template autoinsert="true" context="php_delegatecomment_context" deleted="false" description="Comment for delegate methods" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.delegatecomment" name="delegatecomment">/**
* ${tags}
* ${see_to_target}
*/</template><template autoinsert="true" context="php_newtype_context" deleted="false" description="Newly created files" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.newtype" name="newtype">${filecomment}
${package_declaration}
${typecomment}
${type_declaration}</template><template autoinsert="false" context="php_classbody_context" deleted="false" description="Code in new class type bodies" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.classbody" name="classbody">
</template><template autoinsert="false" context="php_interfacebody_context" deleted="false" description="Code in new interface type bodies" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.interfacebody" name="interfacebody">
</template><template autoinsert="true" context="php_catchblock_context" deleted="false" description="Code in new catch blocks" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.catchblock" name="catchblock">// ${TODO} Auto-generated catch block
${exception_var}.printStackTrace();</template><template autoinsert="true" context="php_methodbody_context" deleted="false" description="Code in created method stubs" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.methodbody" name="methodbody">// ${TODO} Auto-generated method stub
${body_statement}</template><template autoinsert="true" context="php_constructorbody_context" deleted="false" description="Code in created constructor stubs" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.constructorbody" name="constructorbody">${body_statement}
// ${TODO} Auto-generated constructor stub</template><template autoinsert="true" context="php_getterbody_context" deleted="false" description="Code in created getters" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.getterbody" name="getterbody">return ${field};</template><template autoinsert="true" context="php_setterbody_context" deleted="false" description="Code in created setters" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.setterbody" name="setterbody">${field} = ${param};</template><template autoinsert="true" context="php_new_file_context" deleted="false" description="Simple php file" enabled="true" id="org.eclipse.php.ui.editor.templates.php.author" name="New simple PHP file"><?php
${cursor}</template><template autoinsert="true" context="php_new_file_context" deleted="false" description="html 4.01 frameset" enabled="true" id="org.eclipse.php.ui.editor.templates.php.html.frameset" name="New PHP file - HTML frameset"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=${encoding}">
<title>Insert title here</title>
</head>
<frameset>
<frame>
<frame>
<noframes>
<body>
<p>This page uses frames. The current browser you are using does not support frames.</p>
<?php
${cursor}
?>
</body>
</noframes>
</frameset>
</html></template></templates>
格式化程序设置
来自menupoint Formatters 的设置(在代码模板下面)在我的Eclipse中设置如下:
标签政策:标签
缩进尺寸:1
标签尺寸:4
包装线的默认indentatino:1
数组初始值设定项的默认缩进:1
答案 1 :(得分:1)
Zend Framework 2编码标准主要基于PSR-2,但有一些小的补充。我不太确定这些添加内容,但它应该是最小的,您可以通过阅读所有this和this来尝试查找。还有一个meeting log exists from June 2012,其中包含有关此主题的讨论。
我永远不明白为什么他们更愿意引入另一个名为“zend”的新编码标准,而不是简单地按照原样遵循和支持PSR-2。
基本上,我认为调整IDE for PSR-2就足够了。
以下是一些资源:
没有简单的&amp;存在一种神奇的方式来使用键盘快捷键组合来基于ZF2标准格式化您的代码但是,它是可能的。每个IDE都有不同的特征,设置,最佳实践和方法。
阅读一些文档后,您只需仔细调整IDE以获得PSR-2。我强烈建议您使用php-cs-fixer。
希望它有所帮助。
答案 2 :(得分:1)
转到 窗口 - &gt;偏好 - &gt; PHP - &gt;代码风格 - &gt;格式化程序 - &gt;从活动配置文件(Zend)中选择。