Java y PHP (incluso cuando se utiliza OO PHP) tienen una gran variedad de diferencias.
Java, PHP no es, aunque hay un alcance limitado para el tipo-dando a entender en PHP. Esto hace una gran diferencia en las firmas de métodos. En PHP, sólo se puede obligar a los parámetros del método a ser de una cierta clase o interfaz o una matriz:
public function myMethod(SomeClass $foo, array $bar){}
... pero no se puede sugerencia del tipo de primitivas! Entonces public function myMethod(int $foo, boolean $bar){}
no es válido y generará un error de análisis.
Además, cualquier parámetro que ha sido de tipo insinuado no se puede pasar como null
menos null
se da como un valor por defecto. Así que para permitir null
s, es necesario utilizar:
public function myMethod(SomeClass $foo = null)
PHP no requiere (o incluso el apoyo) que especifica el tipo de retorno de una función.
Las clases PHP no tienen campos final
, aunque lo que sería un campo static final
en Java es const
en PHP. EDITAR: Un const
en PHP es más limitado que un static final
en Java, ya que este último puede ser una matriz o instancia de objeto, mientras que el primero debe ser un valor constante (número o una cadena, esencialmente).
"Sobrecarga" en PHP no significa lo mismo que en Java. En Java, significa especificación de varios métodos con el mismo nombre, pero con un conjunto diferente de parámetros:
public void myMethod(int foo){}; public void myMethod(float foo){};
En PHP, se refiere a la creación dinámica de propiedades y métodos utilizando el __get()
, __set()
y __callStatic()
métodos "mágicos". Consulte el PHP manual para obtener una descripción de su uso. La sobrecarga de métodos estilo Java es imposible en PHP y un intento de volver a declarar un método (con o sin un conjunto diferente de parámetros) fallará.
puede ser obvio para algunos, pero en PHP que utilice ::
acceder a métodos estáticos y propiedades y ->
acceder a las instancias, pero en Java .
se utiliza para ambos.
PHP no tiene paquetes, pero tiene espacios de nombres.
A partir de PHP5, los constructores en PHP no deben ser métodos con un nombre que coincida con la clase, como en Java, pero el método mágico __construct()
debe declararse en su lugar, aunque el estilo PHP4 es compatible con compatibilidad retroactiva . Además, PHP tiene un método destructor llamado __destruct()
.
En Java, todas las clases heredan de Object
, pero no existe dicha superclase genérica en PHP.
Incluso cuando se maximiza la cantidad de OOP en un script PHP, todavía se basa en un flujo de procedimiento; no hay un punto de entrada de nivel de clase como en Java (es decir, public static void main(String[] args)
o public void init()
para los applets).
'function' palabra clave en java? –
void ... en java ... pero el mismo principio – danidacar
Si esta es una compilación de tales diferencias, debe hacer esta wiki de la comunidad, ya que no hay una respuesta final a su "pregunta". – PhiLho