OOPS differences between JAVA and PHP
Java and PHP (even when using OO PHP) have a vast array of differences.
Just a few thoughts off the top of my head:
- Java is strongly-typed, PHP is not, although there is a limited scope for type-hinting in PHP. This makes a huge difference to method signatures. In PHP, you can only force method parameters to be of a certain class or interface or an array:
public function myMethod(SomeClass $foo, array $bar){}...but you cannot type-hint for primitives! Sopublic function myMethod(int $foo, boolean $bar){}is invalid and will throw a parse error.Furthermore, any parameter that has been type-hinted cannot be passed asnullunlessnullis given as a default value. So to allownulls, you need to use:public function myMethod(SomeClass $foo = null) - PHP does not require (or even support) specifying the return type of a function.
- PHP classes do not have
finalfields, although what would be astatic finalfield in Java is aconstin PHP. EDIT: Aconstin PHP is more limited than astatic finalin Java as the latter can be an array or object instance, whereas the former must be a constant value (number or a string, essentially). - "Overloading" in PHP does not mean the same as it does in Java. In Java, it means specifying multiple methods of the same name, but with a different set of parameters:
public void myMethod(int foo){}; public void myMethod(float foo){};In PHP, it refers to the dynamic creation of properties and methods using the__get(),__set()and__callStatic()"magic" methods. See the PHP manual for a description on their use. Java-style method overloading is impossible in PHP and an attempt to redeclare a method (with or without a different set of parameters) will fail. - May be obvious to some, but in PHP you use
::to access static methods and properties and->to access instance ones, but in Java.is used for both. - PHP doesn't have packages, but it does have namespaces.
- As of PHP5, constructors in PHP are not supposed to be methods with a name that matches the class, like in Java, but the magic method
__construct()should be declared instead, although the PHP4 style is supported for backward-compatibility. Also, PHP has a destructor method named__destruct(). - In Java, all classes inherit from
Object, but there is no such generic super-class in PHP. - Even when maximizing the amount of OOP in a PHP script, it still relies on a procedural flow; there's no class-level entry point like in Java (i.e.,
public static void main(String[] args)orpublic void init()for applets).

Comments
Post a Comment