Before I explain how to associate two classes that share the same name to different namespaces, it’d be a good idea to review the practical example built in the previous article of the series. It demonstrated how to perform this process with only one class. Basically, the code sample corresponding to the aforementioned example looked like this: namespace UserManager::CMS;
class User{ private $firstName; private $lastName; private $email; public function __construct($firstName,$lastName,$email){ if(!$firstName||strlen($firstName)>32){ throw new Exception('Invalid First Name parameter!'); } if(!$lastName||strlen($lastName)>32){ throw new Exception('Invalid Last Name parameter!'); } if(!$email||!preg_match("/^.+@.+..+$/",$email)){ throw new Exception('Invalid Email parameter!'); } $this->firstName=$firstName; $this->lastName=$lastName; $this->email=$email; } // get user's first name public function getFirstName(){ return $this->firstName; } // get user's last name public function getLastName(){ return $this->lastName; } // get user's email public function getEmail(){ return $this->email; } } try{ // create new instance of 'User' class by using the specified namespace $user=new UserManager::CMS::User('Alejandro','Gervasio','alejandro@domain.com'); // display user data echo 'First Name: '.$user->getFirstName().'<br />'; echo 'Last Name: '.$user->getLastName().'<br />'; echo 'Email: '.$user->getEmail().'<br />'; } catch(Exception $e){ echo $e->getMessage(); exit(); } As you can see, the above example shows a typical case where a single class has been tied to a concrete namespace. Speaking more concretely, in this case the previous “User” class has been linked to a “UserManagement::CMS” namespace by means of the pertinent “namespace” keyword. Finally, an instance of this class is created by using the following expression: $user=new UserManager::CMS::User('Alejandro','Gervasio','alejandro@domain.com'); That's pretty simple to understand, right? The actual functionality of using namespaces, however, is revealed when two or more classes that share the same name are included in one single PHP application. It’s probable that at this moment you’ll be wondering how this can be achieved without getting an error from the PHP interpreter. As you may guess, it’s possible to associate each of these classes with a different namespace, in this way solving any naming conflicts in an elegant manner. In the following section, I’m going to explain in detail how to perform this task. To learn how this will be done, please click on the link that appears below and read the next few lines.
blog comments powered by Disqus |
|
|
|
|
|
|
|