Search code examples
phpoopfunctionprogramming-languages

Do I need to define functions before I use them in object-oriented PHP?


Not sure if I phrased the question correctly but let me explain. In a procedural program, for example:

function getUserId()
{
   // some stuff
   return $someUserId;
}

function getUsername()
{
  $id = getUserId();
  $query = mysql_query(" SELECT * FROM users WHERE id = '$id' ");
  while ($row = mysql_fetch_assoc($query))
  {
     return $row['username'];
  }
}

In the above, the getUsername function called the getUserId function. Since that function was called it must be above the one that called it, otherwise it won't work.

What I would like to know is, in object oriented programming, does the order of functions (methods) in a class matter? Can I call a method within another method even if the method being called is defined further down in the script?


Solution

  • Even in procedural style functions don't need to be declared in order. They only need to exist at the time they are called. This will work perfectly fine, because neither function is actually ever called:

    function foo() {
        bar();
    }
    
    function bar() {
    }
    

    The same goes for OOP, a function must exist when it is called. In which order they are declared is irrelevant.