coding_standard.xml 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780
  1. <appendix id="coding-standard">
  2. <title>Est�ndares de c�digo Zend Framework para PHP</title>
  3. <sect1 id="coding-standard.overview">
  4. <title>Introducci�n</title>
  5. <sect2 id="coding-standard.overview.scope">
  6. <title>Alcance</title>
  7. <para>
  8. Este documento provee las pautas para el formato del c�digo y la documentaci�n a personas y equipos que contribuyan con Zend Framework. Muchos de los desarrolladores que usan Zend Framework han encontrado �tiles estos est�ndares debido a que el estilo de su c�digo permanece consistente con otros c�digos fuente basados en Zend Framework. Tambi�n debe resaltarse que especificar completamente los est�ndares de c�digo requiere un esfuerzo significativo.
  9. Nota: A veces, los desarrolladores consideran el establecimiento de est�ndares m�s importante que lo que el est�ndar sugiere realmente al nivel m�s detallado de dise�o. Estas pautas en los est�ndares de c�digo de Zend Framework han demostrado funcionar bien en otros projectos ZF. Puede modificar estos est�ndares o usarlos en consonancia con los t�rminos de nuestra <ulink url="http://framework.zend.com/license">licencia</ulink>
  10. </para>
  11. <para>
  12. Temas incluidos en los est�ndares de c�digo ZF:
  13. <itemizedlist>
  14. <listitem>
  15. <para>Dar formato a archivos PHP</para>
  16. </listitem>
  17. <listitem>
  18. <para>Convenciones de nombrado</para>
  19. </listitem>
  20. <listitem>
  21. <para>Estilo de c�digo</para>
  22. </listitem>
  23. <listitem>
  24. <para>Documentaci�n integrada</para>
  25. </listitem>
  26. </itemizedlist>
  27. </para>
  28. </sect2>
  29. <sect2 id="coding-standard.overview.goals">
  30. <title>Objetivos</title>
  31. <para>
  32. Los est�ndares de c�digo resultan importantes en cualquier proyecto de desarrollo, pero son
  33. especialmente importantes cuando muchos desarrolladores trabajan en el mismo proyecto. Los
  34. est�ndares de c�digo ayudan a asegurar que el c�digo tenga una alta calidad, menos errores,
  35. y pueda ser mantenido f�cilmente.
  36. </para>
  37. </sect2>
  38. </sect1>
  39. <sect1 id="coding-standard.php-file-formatting">
  40. <title>Formato de archivos PHP</title>
  41. <sect2 id="coding-standard.php-file-formatting.general">
  42. <title>General</title>
  43. <para>
  44. Para archivos que contengan �nicamente c�digo PHP, la etiqueta de cierre ("?>") no est� permitida. No es requerida por PHP, y omitirla evita la inyecci�n de espacios en blanco en la respuesta.
  45. </para>
  46. <para>
  47. <emphasis>IMPORTANTE:</emphasis> La inclusi�n de datos binarios arbitrarios permitidos por <code>__HALT_COMPILER()</code>
  48. est� prohibida en los archivos PHP de Zend Framework, as� como en cualquier fichero derivado. El uso de esta caracter�stica s�lo est� permitido en algunos scripts de instalaci�n.
  49. </para>
  50. </sect2>
  51. <sect2 id="coding-standard.php-file-formatting.indentation">
  52. <title>Identaci�n</title>
  53. <para>La identaci�n suele est�r compuesta por 4 espacios. Las tabulaciones no est�n permitidas.</para>
  54. </sect2>
  55. <sect2 id="coding-standard.php-file-formatting.max-line-length">
  56. <title>Tama�o m�ximo de l�nea</title>
  57. <para>
  58. La longitud recomendable para una l�nea de c�digo es de 80 caracteres. Esto significa que los desarrolladores de Zend deber�an intentar mantener cada l�nea de su c�digo por debajo de los 80 caracteres, siempre que sea posible. No obstante, l�neas m�s largas pueden ser aceptables en algunas situaciones. El tama�o m�ximo de cualquier l�nea de c�digo PHP es de 120 caracteres.
  59. </para>
  60. </sect2>
  61. <sect2 id="coding-standard.php-file-formatting.line-termination">
  62. <title>Final de l�nea</title>
  63. <para>
  64. El Final de L�nea sigue la convenci�n de archivos de texto Unix. Las l�neas deben acabar con un car�cter linefeed (LF). Los caracteres Linefeed est�n representados con el n�mero 10 ordinal, o el n�mero 0x0A hexadecimal.
  65. </para>
  66. <para>
  67. Nota: No use retornos de carro (carriage returns, CR) como en las fuentes de Apple (0x0D) o la combinaci�n de retorno de carro/linefeed (CRLF) est�ndar para sistemas operativos Windows (0x0D, 0x0A).
  68. </para>
  69. </sect2>
  70. </sect1>
  71. <sect1 id="coding-standard.naming-conventions">
  72. <title>Convenciones de nombrado</title>
  73. <sect2 id="coding-standard.naming-conventions.classes">
  74. <title>Clases</title>
  75. <para>
  76. Zend Framework se estandariza en una convenci�n de nombrado de clases donde los
  77. nombres de las clases apuntan directamente a las carpetas en las que est�n contenidas.
  78. La carpeta ra�z de la librer�a est�ndar de ZF es la carpeta "Zend/", mientras que la carpeta ra�z de las
  79. librer�as extra de ZF es la carpeta "ZendX/". Todas las clases Zend Framework est�n almacenadas
  80. jer�rquicamente bajo estas carpetas ra�z.
  81. </para>
  82. <para>
  83. Los nombres de clase pueden contener s�lo caracteres alfanum�ricos. Los n�meros est�n permitidos en los nombres de clase, pero desaconsejados en la mayor�a de casos. Las barras bajas (_) est�n permitidas s�lo como separador de ruta (el archivo "Zend/Db/Table.php" debe apuntar al nombre de clase "Zend_Db_Table").
  84. </para>
  85. <para>
  86. Si el nombre de una clase est� compuesto por m�s de una palabra, la primera letra de
  87. cada palabra debe aparecer en may�sculas. Poner en may�sculas las letras siguientes no est� permitido,
  88. ej: "Zend_PDF" no est� permitido, mientras que "Zend_Pdf" es admisible.
  89. </para>
  90. <para>
  91. Estas convenciones definen un mecanismo de pseudo-espacio de nombres para Zend Framework. Zend Framework adoptar� la funcionalidad PHP de espacio de nombres cuando est� disponible y sea factible su uso en las aplicaciones de nuestros desarrolladores.
  92. </para>
  93. <para>
  94. Vea los nombres de clase en las librer�as estandar y adicionales (extras) como ejemplos de esta convenci�n de nombres.
  95. <emphasis>IMPORTANTE:</emphasis> El c�digo que deba distribuirse junto a las librer�as ZF, pero no forma parte de las librer�as est�ndar o extras de Zend (e.g.: c�digo o librer�as que no est�n distribu�das por Zend) no puede empezar nunca por "Zend_" o "ZendX_".
  96. </para>
  97. </sect2>
  98. <sect2 id="coding-standard.naming-conventions.filenames">
  99. <title>Nombres de archivo</title>
  100. <para>
  101. Para cualquier otro archivo, s�lo caracteres alfanum�ricos, barras bajas (_) y guiones (-) est�n permitidos. Los espacios en blanco est�n estrictamente prohibidos.
  102. </para>
  103. <para>
  104. Cualquier archivo que contenga c�digo PHP debe terminar con la extensi�n ".php", con la excepci�n de los scripts de vista. Los siguientes ejemplos muestran nombres de archivo admisibles para clases de Zend Framework..:
  105. <programlisting role="php"><![CDATA[
  106. Zend/Db.php
  107. Zend/Controller/Front.php
  108. Zend/View/Helper/FormRadio.php
  109. ]]>
  110. </programlisting>
  111. Los nombres de archivo deben apuntar a nombres de clases como se describe arriba.
  112. </para>
  113. </sect2>
  114. <sect2 id="coding-standard.naming-conventions.functions-and-methods">
  115. <title>Funciones y M�todos</title>
  116. <para>
  117. Los nombres de funciones pueden contener �nicamente caracteres alfanum�ricos. Las barras bajas (_)
  118. no est�n permitidas.
  119. Los n�meros est�n permitidos en los nombres de funci�n pero no se aconseja en la
  120. mayor�a de casos.
  121. </para>
  122. <para>
  123. Los nombres de funciones deben empezar siempre con una letra min�scula. Cuando un nombre de funci�n consiste en
  124. m�s de una palabra, la primera letra de cada nueva palabra debe estar en may�sculas. Esto es llamado com�nmente como formato "camelCase".
  125. </para>
  126. <para>
  127. Por norma general, se recomienda la elocuencia. Los nombres de funci�n deben ser lo suficientemente elocuentes como para describir su prop�sito y comportamiento.
  128. </para>
  129. <para>
  130. Estos son ejemplos de nombres de funciones admisibles:
  131. <programlisting role="php"><![CDATA[
  132. filterInput()
  133. getElementById()
  134. widgetFactory()
  135. ]]>
  136. </programlisting>
  137. </para>
  138. <para>
  139. Para programaci�n orientada a objetos, los accesores para instancia o variables est�ticas deben ir antepuestos con un
  140. "get" o un "set". Al implementar patrones de dise�o, tales como el patr�n singleton o el patr�n factory, el nombre del m�todo debe contener en la pr�ctica el nombre del patr�n para describir su comportamiento de form�s m�s completa.
  141. </para>
  142. <para>
  143. Para m�todos en objetos que son declarados con el modificador "private" o "protected",
  144. el primer car�cter del nombre de la variable debe ser una barra baja (_). �ste es el �nico
  145. uso admisible de una barra baja en un nombre de m�todo. Los m�todos declarados como p�blicos
  146. no deber�an contener nunca una barra baja.
  147. </para>
  148. <para>
  149. Las funciones de alcance global (tambi�n llamadas "funciones flotantes") est�n permitidas pero desaconsejadas en la mayor�a de casos.
  150. Considere envolver esas funciones en una clase est�tica.
  151. </para>
  152. </sect2>
  153. <sect2 id="coding-standard.naming-conventions.variables">
  154. <title>Variables</title>
  155. <para>
  156. Los nombres de variables pueden contener caracteres alfanum�ricos. Las barras bajas (_)
  157. no est�n permitidas.
  158. Los n�meros est�n permitidos en los nombres de variable pero no se aconseja en la
  159. mayor�a de casos.
  160. </para>
  161. <para>
  162. Para las variables de instancia que son declaradas con el modificador "private" o "protected",
  163. el primer car�cter de la variable debe ser una �nica barra baja (_). �ste es el �nico caso admisible de una barra baja en el nombre de una variable. Las variables declaradas como "public" no pueden empezar nunca por barra baja.
  164. </para>
  165. <para>
  166. Al igual que los nombres de funciones (ver secci�n 3.3), los nombres de variables deben empezar siempre con una letra en min�scula y seguir la convenci�n "camelCaps".
  167. </para>
  168. <para>
  169. Por norma general, se recomienda la elocuencia. Las variables deber�an ser siempre tan elocuentes como pr�cticas para describir los datos que el desarrollador pretende almacenar en ellas. Variables escuetas como "$i" y "$n" est�n desaconsejadas, salvo para el contexto de los bucles m�s peque�os. Si un bucle contiene m�s de 20 l�neas de c�digo, las variables de �ndice deber�an tener nombres m�s descriptivos.
  170. </para>
  171. </sect2>
  172. <sect2 id="coding-standard.naming-conventions.constants">
  173. <title>Constantes</title>
  174. <para>
  175. Las constantes pueden contener tanto caracteres alfanum�ricos como barras bajas (_). Los n�meros est�n permitidos.
  176. </para>
  177. <para>
  178. Todos las letras pertenecientes al nombre de una constante deben aparecer en may�sculas.
  179. </para>
  180. <para>
  181. Las palabras dentro del nombre de una constante deben separarse por barras bajas (_). Por ejemplo, <code>EMBED_SUPPRESS_EMBED_EXCEPTION</code> est� permitido, pero
  182. <code>EMBED_SUPPRESSEMBEDEXCEPTION</code> no.
  183. </para>
  184. <para>
  185. Las constantes deben ser definidas como miembros de clase con el modificador "const". Definir constantes en el alcance global con la funci�n "define" est� permitido pero no recomendado.
  186. </para>
  187. </sect2>
  188. </sect1>
  189. <sect1 id="coding-standard.coding-style">
  190. <title>Estilo de c�digo</title>
  191. <sect2 id="coding-standard.coding-style.php-code-demarcation">
  192. <title>Demarcaci�n de c�digo PHP</title>
  193. <para>
  194. El c�digo PHP debe estar delimitado siempre por la forma completa de las etiquetas PHP est�ndar:
  195. <programlisting role="php"><![CDATA[
  196. <?php
  197. ?>
  198. ]]>
  199. </programlisting>
  200. </para>
  201. <para>
  202. Las etiquetas cortas (short tags) no se permiten nunca. Para archivos que contengan �nicamente c�digo PHP, la etiqueta de cierrre debe omitirse siempre (Ver <xref linkend="coding-standard.php-file-formatting.general" />).
  203. </para>
  204. </sect2>
  205. <sect2 id="coding-standard.coding-style.strings">
  206. <title>Cadenas</title>
  207. <sect3 id="coding-standard.coding-style.strings.literals">
  208. <title>Literales cadena</title>
  209. <para>
  210. Cuando una cadena es literal (no contiene sustituci�n de variables), el ap�strofo o "comilla"
  211. deber�a ser usado siempre para delimitar la cadena:
  212. <programlisting role="php"><![CDATA[
  213. $a = 'Example String';
  214. ]]>
  215. </programlisting>
  216. </para>
  217. </sect3>
  218. <sect3 id="coding-standard.coding-style.strings.literals-containing-apostrophes">
  219. <title>Literales Cadena que Contengan Ap�strofos</title>
  220. <para>
  221. Cuando el propio literal cadena contega ap�strofos, es permitido delimitar la cadena
  222. con "dobles comillas". Esto es especialmente �til para sentencias SQL:
  223. <programlisting role="php"><![CDATA[
  224. $sql = "SELECT `id`, `name` from `people` WHERE `name`='Fred' OR `name`='Susan'";
  225. ]]>
  226. </programlisting>
  227. Esta sint�xis es preferible a escapar ap�strofes, ya ques mucho m�s f�cil de leer.
  228. </para>
  229. </sect3>
  230. <sect3 id="coding-standard.coding-style.strings.variable-substitution">
  231. <title>Sustituci�n de Variables</title>
  232. <para>
  233. La sustituci�n de variables est� permitida en cualquiera de estas formas:
  234. <programlisting role="php"><![CDATA[
  235. $greeting = "Hello $name, welcome back!";
  236. $greeting = "Hello {$name}, welcome back!";
  237. ]]>
  238. </programlisting>
  239. </para>
  240. <para>
  241. Por consistencia, esta forma no est� permitida:
  242. <programlisting role="php"><![CDATA[
  243. $greeting = "Hello ${name}, welcome back!";
  244. ]]>
  245. </programlisting>
  246. </para>
  247. </sect3>
  248. <sect3 id="coding-standard.coding-style.strings.string-concatenation">
  249. <title>Concatenaci�n de cadenas</title>
  250. <para>
  251. Las cadenas deben ser concatenadas usando el operador punto ("."). Un espacio debe a�adirse
  252. siempre antes y despu�s del operador "." para mejorar la legibilidad:
  253. <programlisting role="php"><![CDATA[
  254. $company = 'Zend' . ' ' . 'Technologies';
  255. ]]>
  256. </programlisting>
  257. </para>
  258. <para>
  259. Al concatenar cadenas con el operador ".", se recomienda partir la sentencia en
  260. m�ltiples l�neas para mejorar la legibilidad. En estos casos, cada linea sucesiva
  261. debe llevar un margen de espacios en blanco de forma que el operador
  262. "." est� alineado bajo el operador "=":
  263. <programlisting role="php"><![CDATA[
  264. $sql = "SELECT `id`, `name` FROM `people` "
  265. . "WHERE `name` = 'Susan' "
  266. . "ORDER BY `name` ASC ";
  267. ]]>
  268. </programlisting>
  269. </para>
  270. </sect3>
  271. </sect2>
  272. <sect2 id="coding-standard.coding-style.arrays">
  273. <title>Arrays</title>
  274. <sect3 id="coding-standard.coding-style.arrays.numerically-indexed">
  275. <title>Arrays Indexados Num�ricamente</title>
  276. <para>No est�n permitidos n�meros negativos como �ndices.</para>
  277. <para>
  278. Un array indexado puede empezar por cualquier valor no negativo, sin embargo, no se recomiendan �ndices base distintos a 0.
  279. </para>
  280. <para>
  281. Al declarar arrays indexados con la funci�n <code>array</code>, un espacio de separaci�n deben a�adirse despu�s de cada delimitador coma para mejorar la legibilidad:
  282. <programlisting role="php"><![CDATA[
  283. $sampleArray = array(1, 2, 3, 'Zend', 'Studio');
  284. ]]>
  285. </programlisting>
  286. </para>
  287. <para>
  288. Se permite declarar arrays indexados multil�nea usando la construcci�n "array".
  289. En este caso, cada l�nea sucesiva debe ser tabulada con cuatro espacios de forma que el principio de cada l�nea est� alineado:
  290. <programlisting role="php"><![CDATA[
  291. $sampleArray = array(1, 2, 3, 'Zend', 'Studio',
  292. $a, $b, $c,
  293. 56.44, $d, 500);
  294. ]]>
  295. </programlisting>
  296. </para>
  297. </sect3>
  298. <sect3 id="coding-standard.coding-style.arrays.associative">
  299. <title>Arrays Asociativos</title>
  300. <para>
  301. Al declarar arrays asociativos con la construcci�n <code>array</code>, se recomienda partir la declaraci�n en m�ltiples l�neas. En este caso, cada l�nea sucesiva debe ser tabulada con cuatro espacios de forma que tanto las llaves como los valores est�n alineados:
  302. <programlisting role="php"><![CDATA[
  303. $sampleArray = array('firstKey' => 'firstValue',
  304. 'secondKey' => 'secondValue');
  305. ]]>
  306. </programlisting>
  307. </para>
  308. </sect3>
  309. </sect2>
  310. <sect2 id="coding-standard.coding-style.classes">
  311. <title>Clases</title>
  312. <sect3 id="coding-standard.coding-style.classes.declaration">
  313. <title>Declaraci�n de clases</title>
  314. <para>
  315. Las Clases deben ser nombradas de acuerdo a las convenciones de nombrado de Zend Framework.
  316. </para><para>
  317. La llave "{" deber� escribirse siempre en la l�nea debajo del nombre de la clase ("one true brace").
  318. </para><para>
  319. Cada clase debe contener un bloque de documentaci�n acorde con el est�ndar de PHPDocumentor.
  320. </para><para>
  321. Todo el c�digo contenido en una clase debe ser separado con cuatro espacios.
  322. </para><para>
  323. �nicamente una clase est� permitida en cada archivo PHP.
  324. </para><para>
  325. Incluir c�digo adicional en archivos de clase est� permitido pero desaconsejado.
  326. En archivos de ese tipo, dos l�neas en blanco deben separar la clase de cualquier c�digo PHP adicional en el archivo de clase.
  327. </para><para>
  328. A continuaci�n se muestra un ejemplo de una declaraci�n de clase admisible:
  329. <programlisting role="php"><![CDATA[
  330. /**
  331. * Bloque de Documentaci�n aqu�
  332. */
  333. class SampleClass
  334. {
  335. // el contenido de la clase
  336. // debe separarse con cuatro espacios
  337. }
  338. ]]>
  339. </programlisting>
  340. </para>
  341. </sect3>
  342. <sect3 id="coding-standard.coding-style.classes.member-variables">
  343. <title>Variables de miembros de clase</title>
  344. <para>
  345. Las variables de miembros de clase deben ser nombradas de acuerdo con las conveciones de nombrado de variables de Zend Framework.
  346. </para>
  347. <para>
  348. Cualquier variable declarada en una clase debe ser listada en la parte superior de la clase, por encima de las declaraciones de cualquier m�todo.
  349. </para>
  350. <para>
  351. La construcci�n <code>var</code> no est� permitido. Las variables de miembro siempre declaran su visibilidad usando uno los modificadores <code>private</code>, <code>protected</code>,
  352. o <code>public</code>. Dar acceso a las variables de miembro declar�ndolas directamente como public est� permitido pero no se aconseja en favor de accesor methods (set/get).
  353. </para>
  354. </sect3>
  355. </sect2>
  356. <sect2 id="coding-standard.coding-style.functions-and-methods">
  357. <title>Funciones y M�todos</title>
  358. <sect3 id="coding-standard.coding-style.functions-and-methods.declaration">
  359. <title>Declaraci�n de Funciones y M�todos</title>
  360. <para>
  361. Las Funciones deben ser nombradas de acuerdo a las convenciones de nombrado de Zend Framework.
  362. </para>
  363. <para>
  364. Los m�todos dentro de clases deben declarar siempre su visibilidad usando un modificador <code>private</code>, <code>protected</code>,
  365. o <code>public</code>.
  366. </para>
  367. <para>
  368. Como en las clases, la llave "{" debe ser escrita en la l�nea siguiente al nombre de la funci�n ("one true brace" form).
  369. No est� permitido un espacio entre el nombre de la funci�n y el par�ntesis de apertura para los argumentos.
  370. </para>
  371. <para>
  372. Las funciones de alcance global no est�n permitidas.
  373. </para>
  374. <para>
  375. Lo siguiente es un ejemplo de una declaraci�n admisible de una funci�n en una clase:
  376. <programlisting role="php"><![CDATA[
  377. /**
  378. * Bloque de Documentaci�n aqu�
  379. */
  380. class Foo
  381. {
  382. /**
  383. * Bloque de Documentaci�n aqu�
  384. */
  385. public function bar()
  386. {
  387. // el contenido de la funci�n
  388. // debe separarse con cuatro espacios
  389. }
  390. }
  391. ]]>
  392. </programlisting>
  393. </para>
  394. <para>
  395. <emphasis>NOTA:</emphasis> El paso por referencia es el �nico mecanismo de paso de par�metros permitido en una declaraci�n de m�todo.
  396. <programlisting role="php"><![CDATA[
  397. /**
  398. * Bloque de Documentaci�n aqu�
  399. */
  400. class Foo
  401. {
  402. /**
  403. * Bloque de Documentaci�n aqu�
  404. */
  405. public function bar(&$baz)
  406. {}
  407. }
  408. ]]>
  409. </programlisting>
  410. </para>
  411. <para>
  412. La llamada por referencia est� estrictamente prohibida.
  413. </para>
  414. <para>
  415. El valor de retorno no debe estar indicado entre par�ntesis. Esto podr�a afectar a la legibilidad, adem�s
  416. de romper el c�digo si un m�todo se modifica posteriormente para que devuelva por referencia.
  417. <programlisting role="php"><![CDATA[
  418. /**
  419. * Bloque de Documentaci�n aqu�
  420. */
  421. class Foo
  422. {
  423. /**
  424. * INCORRECTO
  425. */
  426. public function bar()
  427. {
  428. return($this->bar);
  429. }
  430. /**
  431. * CORRECTO
  432. */
  433. public function bar()
  434. {
  435. return $this->bar;
  436. }
  437. }
  438. ]]>
  439. </programlisting>
  440. </para>
  441. </sect3>
  442. <sect3 id="coding-standard.coding-style.functions-and-methods.usage">
  443. <title>Uso de Funciones y M�todos</title>
  444. <para>
  445. Los argumentos de la funci�n tendr�an que estar separados por un �nico espacio posterior despu�s del delimitador coma.
  446. A continuaci�n se muestra un ejemplo de una invocaci�n admisible de una funci�n que recibe tres argumentos:
  447. <programlisting role="php"><![CDATA[
  448. threeArguments(1, 2, 3);
  449. ]]>
  450. </programlisting>
  451. </para>
  452. <para>
  453. La llamada por referencia est� estrictamente prohibida. Vea la secci�n de declaraciones de funciones para el m�todo correcto de pasar argumentos por referencia.
  454. </para>
  455. <para>
  456. Al pasar arrays como argumentos a una funci�n, la llamada a la funci�n puede incluir el indicador "hint" y puede separarse en m�ltiples l�neas para aumentar la legibilidad. En esos casos, se aplican las pautas normales para escribir arrays:
  457. <programlisting role="php"><![CDATA[
  458. threeArguments(array(1, 2, 3), 2, 3);
  459. threeArguments(array(1, 2, 3, 'Zend', 'Studio',
  460. $a, $b, $c,
  461. 56.44, $d, 500), 2, 3);
  462. ]]>
  463. </programlisting>
  464. </para>
  465. </sect3>
  466. </sect2>
  467. <sect2 id="coding-standard.coding-style.control-statements">
  468. <title>Sentencias de Control</title>
  469. <sect3 id="coding-standard.coding-style.control-statements.if-else-elseif">
  470. <title>If/Else/Elseif</title>
  471. <para>
  472. Las sentencias de control basadas en las construcciones <code>if</code> y <code>elseif</code>
  473. deben tener un solo espacio en blanco antes del par�ntesis de apertura del condicional y un solo espacio en blanco despu�s del par�ntesis de cierre.
  474. </para>
  475. <para>
  476. Dentro de las sentencias condicionales entre par�ntesis, los operadores deben separarse con espacios, por legibilidad. Se aconseja el uso de par�ntesis internos para mejorar la agrupaci�n l�gica en expresiones condicionales m�s largas.
  477. </para>
  478. <para>
  479. La llave de apertura "{" se escribe en la misma l�nea que la sentencia condicional. La llave de cierre "}" se escribe siempre en su propia l�nea. Cualquier contenido dentro de las llaves debe separarse con cuatro espacios en blanco.
  480. <programlisting role="php"><![CDATA[
  481. if ($a != 2) {
  482. $a = 2;
  483. }
  484. ]]>
  485. </programlisting>
  486. </para>
  487. <para>
  488. Para las declaraciones "if" que incluyan "elseif" o "else", las convenciones de formato son similares a la construcci�n "if". Los ejemplos siguientes demuestran el formato correcto para declaraciones "if" con construcciones "else" y/o "elseif":
  489. <programlisting role="php"><![CDATA[
  490. if ($a != 2) {
  491. $a = 2;
  492. } else {
  493. $a = 7;
  494. }
  495. if ($a != 2) {
  496. $a = 2;
  497. } elseif ($a == 3) {
  498. $a = 4;
  499. } else {
  500. $a = 7;
  501. }
  502. ]]>
  503. </programlisting>
  504. PHP permite escribir sentencias sin llaves -{}- en algunas circunstancias.
  505. Este est�ndar de c�digo no hace ninguna diferenciaci�n- toda sentencia "if",
  506. "elseif" o "else" debe usar llaves.
  507. </para>
  508. <para>
  509. El uso de la construcci�n "elseif" est� permitido pero no se aconseja, en favor de
  510. la combinaci�n "else if".
  511. </para>
  512. </sect3>
  513. <sect3 id="coding-standards.coding-style.control-statements.switch">
  514. <title>Switch</title>
  515. <para>
  516. Las declaraciones de control escritas con la declaraci�n "switch" deben tener un �nico espacio en blanco antes del par�ntesis de apertura del condicional y despu�s del par�ntesis de cierre.
  517. </para>
  518. <para>
  519. Todo contenido dentro de una declaraci�n "switch" debe separarse usando cuatro espacios. El contenido dentro de cada declaraci�n "case" debe separarse usando cuatro espacios adicionales.
  520. </para>
  521. <programlisting role="php"><![CDATA[
  522. switch ($numPeople) {
  523. case 1:
  524. break;
  525. case 2:
  526. break;
  527. default:
  528. break;
  529. }
  530. ]]>
  531. </programlisting>
  532. <para>
  533. La construcci�n <code>default</code> no debe omitirse nunca en una declaraci�n <code>switch</code>.
  534. </para>
  535. <para>
  536. <emphasis>NOTA:</emphasis> En ocasiones, resulta �til escribir una declaraci�n <code>case</code> que salta al
  537. siguiente case al no incluir un <code>break</code> o <code>return</code> dentro de ese case. Para distinguir
  538. estos casos de posibles errores, cualquier declaraci�n donde <code>break</code> o <code>return</code> sean
  539. omitidos deber�n contener un comentario indicando que se omitieron intencionadamente.
  540. </para>
  541. </sect3>
  542. </sect2>
  543. <sect2 id="coding-standards.inline-documentation">
  544. <title>Documentaci�n integrada</title>
  545. <sect3 id="coding-standards.inline-documentation.documentation-format">
  546. <title>Formato de documentaci�n</title>
  547. <para>
  548. Todos los bloques de documentaci�n ("docblocks") deben ser compatibles con el formato de phpDocumentor.
  549. Describir el formato de phpDocumentor est� fuera del alcance de este documento.
  550. Para m�s informaci�n, visite: <ulink url="http://phpdoc.org/">http://phpdoc.org/</ulink>
  551. </para>
  552. <para>
  553. Todos los archivos de clase deben contener un bloque de documentaci�n "a nivel de archivo" al principio de cada archivo y un bloque de documentaci�n "a nivel de clase" inmediatamente antes de cada clase. Ejemplo de estos bloques de documentaci�n pueden encontrarse debajo.
  554. </para>
  555. </sect3>
  556. <sect3 id="coding-standards.inline-documentation.files">
  557. <title>Archivo</title>
  558. <para>
  559. Cada archivo que contenga c�digo PHP debe tener un bloque de documentaci�n al principio del archivo que contenga como m�nimo las siguientes etiquetas phpDocumentor:
  560. <programlisting role="php"><![CDATA[
  561. /**
  562. * Descripci�n corta del fichero
  563. *
  564. * Descripci�n larga del fichero (si la hubiera)...
  565. *
  566. * LICENSE: Informaci�n sobre la licencia
  567. *
  568. * @copyright 2008 Zend Technologies
  569. * @license http://framework.zend.com/license BSD License
  570. * @version $Id:$
  571. * @link http://framework.zend.com/package/PackageName
  572. * @since File available since Release 1.5.0
  573. */
  574. ]]>
  575. </programlisting>
  576. </para>
  577. </sect3>
  578. <sect3 id="coding-standards.inline-documentation.classes">
  579. <title>Clases</title>
  580. <para>
  581. Cada clase debe contener un bloque de documentaci�n que contenga como m�nimo las siguientes etiquetas phpDocumentor:
  582. <programlisting role="php"><![CDATA[
  583. /**
  584. * Descripci�n corta de la clase
  585. *
  586. * Descripci�n larga de la clase (si la hubiera)...
  587. *
  588. * @copyright 2008 Zend Technologies
  589. * @license http://framework.zend.com/license BSD License
  590. * @version Release: @package_version@
  591. * @link http://framework.zend.com/package/PackageName
  592. * @since Class available since Release 1.5.0
  593. * @deprecated Class deprecated in Release 2.0.0
  594. */
  595. ]]>
  596. </programlisting>
  597. </para>
  598. </sect3>
  599. <sect3 id="coding-standards.inline-documentation.functions">
  600. <title>Funciones</title>
  601. <para>
  602. Cada funci�n, incluyendo m�todos de objeto, debe contener un bloque de documentaci�n que contenga como m�nimo:
  603. <itemizedlist>
  604. <listitem><para>Una descripci�n de la funci�n</para></listitem>
  605. <listitem><para>Todos los argumentos</para></listitem>
  606. <listitem><para>Todos los posibles valores de retorno</para></listitem>
  607. </itemizedlist>
  608. </para>
  609. <para>
  610. No es necesario incluir la etiqueta "@access" si el nivel de acceso es
  611. conocido de antemano por el modificador "public", "private", o "protected"
  612. usado para declarar la funci�n.
  613. </para>
  614. <para>
  615. Si una funci�n/m�todo puede lanzar una excepci�n, utilice @throws para todos los tipos
  616. de excepciones conocidas:
  617. <programlisting role="php"><![CDATA[
  618. @throws exceptionclass [description]
  619. ]]>
  620. </programlisting>
  621. </para>
  622. </sect3>
  623. </sect2>
  624. </sect1>
  625. </appendix>
  626. <!--
  627. vim:se ts=4 sw=4 et:
  628. -->