PHP uses __construct() to set properties for a newly created object. From what I understand, it's not really a constructor, but a method. Why? 
Also - for less .. inconsistent languages like Java or Python does the object gets instantiated before or after the constructor is called? And how is this different from the PHP way?
Thanks!
In every object-oriented language (that I know of; I'm hardly an expert in all of them), the constructor is called after the object is created, to initialise the contents of the object. No code in the constructor creates the object, or can in anyway influence the creation process[1].
(Note I don't refer to memory; in languages like C++ and Java "the object has been created" means the memory its fields occupy has been allocated, whereas in Python "the object has been created" means there is a dictionary that will hold attributes of the object once they are assigned)
In most OO languages that I know of, constructors also have extremely similar syntax to methods, and I don't see any conceptual difficulty in thinking about them as methods in most senses (in Python the __init__ method is literally a method in every sense; there's just a protocol that the runtime system invokes it on new objects after they're created).

[1]Python has additionally a feature that does let you control the object creation process; but you don't do it with the __init__ method (the special method that most closely corresponds with constructors from Java/PHP), you do with with __new__.
Why is the PHP constructor a method?