Welcome, Guest: Register On Nairaland / LOGIN! / Trending / Recent / New
Stats: 3,161,735 members, 7,847,980 topics. Date: Sunday, 02 June 2024 at 12:51 PM

Let's Learn Object Oriented PHP! - Programming - Nairaland

Nairaland Forum / Science/Technology / Programming / Let's Learn Object Oriented PHP! (6162 Views)

Object-oriented PHP / A Beginners Guide To Object-oriented Programming (OOP) In PHP 5+ / Criticism Of Object Oriented Programming (2) (3) (4)

(1) (2) (Reply) (Go Down)

Let's Learn Object Oriented PHP! by timbs001(m): 11:10am On Mar 30, 2012
Most companies nowadays hiring PHP developers are requiring knowledge of Object oriented PHP as a requisite. I have worked with many Frameworks such as PEAR, Zend Framework and also Drupal CMS and all of them are developed using object oriented Approach. Most PHP developers are still comfortable with the old procedural way of coding and are seemingly scared of the word OOP. I want us to use this medium to enlighten everyone the advantages of OOP PHP over the old procedural way and also post relevant tutorials to help pple learn. Once pple signify interest , I will also start posting tutorials also. Pls let's keep the thread Educative and dedicated to PHP cheesy
Re: Let's Learn Object Oriented PHP! by doncigalo: 11:17am On Mar 30, 2012
I'm game !!
Re: Let's Learn Object Oriented PHP! by solokool(m): 12:08pm On Mar 30, 2012
i need it
Re: Let's Learn Object Oriented PHP! by timbs001(m): 4:05pm On Mar 30, 2012
@donciaglo and solokool, noted wink
Re: Let's Learn Object Oriented PHP! by AZeD1(m): 1:18pm On Mar 31, 2012
OK.....I'm game
Re: Let's Learn Object Oriented PHP! by hello1212: 3:54pm On Apr 01, 2012
I'm game !!
[img]http://www.dubaa.info/g.gif[/img]
Re: Let's Learn Object Oriented PHP! by timbs001(m): 8:52am On Apr 02, 2012
@A-Zed and Hello1212, noted. We will kick off this week. Keep checking the thread for updates. Happy PHPing cheesy
Re: Let's Learn Object Oriented PHP! by kodewrita(m): 2:02pm On Apr 02, 2012
timbs001: @A-Zed and Hello1212, noted. We will kick off this week. Keep checking the thread for updates. Happy PHPing cheesy
Good stuff timbs001 and welcome. If this gets good enough, we might sticky it. All the best.
Re: Let's Learn Object Oriented PHP! by Seun(m): 4:20pm On Apr 02, 2012
OOP PHP. Alright! I'm also thinking about creating threads for functional Visual Basic & high level machine language.
Re: Let's Learn Object Oriented PHP! by mj(m): 7:22pm On Apr 02, 2012
I'm in.
Re: Let's Learn Object Oriented PHP! by Nobody: 8:50pm On Apr 02, 2012
pulled from killerPHP.com
Object Oriented PHP for Beginners: Steps 1 - 5

For this tutorial, you should understand a few PHP basics: functions, variables, conditionals and loops.

To make things easy, the tutorial is divided into 22 steps.

Step 1:
First thing we need to do is create two PHP pages:

index.php
class_lib.php
OOP is all about creating modular code, so our object oriented PHP code will be contained in dedicated files that we will then insert into our normal PHP page using php 'includes'.

In this case, all our OO PHP code will be in the PHP file:

class_lib.php
OOP revolves around a construct called a 'class'. Classes are the cookie-cutters / templates that are used to define objects.

Step 2:
Create a simple PHP class (in class_lib.php)

Instead of having a bunch of functions, variables and code floating around willy-nilly, to design your php scripts or code libraries the OOP way, you'll need to define/create your own classes.

You define your own class by starting with the keyword 'class' followed by the name you want to give your new class.

<?php
class person {

}
?>
Note: You enclose a class using curly braces ( { } ) ... just like you do with functions .

Step 3:
Add data to your class

Classes are the blueprints for php objects - more on that later. One of the big differences between functions and classes is that a class contains both data (variables) and functions that form a package called an: 'object'.

When you create a variable inside a class, it is called a 'property'.

<?php
class person {
public $name;
}
?>
Note: The data/variables inside a class (ex: var namewink are called 'properties'.

Step 4:
Add functions/methods to your class

In the same way that variables get a different name when created inside a class (they are called: properties,) functions also referred to (by nerds) by a different name when created inside a class - they are called 'methods'.

A class's methods are used to manipulate its own data / properties.

<?php
class person {
public $name;
function set_name($new_name) {
$this->name = $new_name;
}
function get_name() {
return $this->name;
}
}
?>
Note: Don't forget that in a class, variables are called 'properties' and functions are called 'methods'.

Step 5:
Getter and setter functions

We've created two interesting functions/methods: get_name() and set_name().

These methods follow a common OOP convention that you see in many languages (including Java and Ruby) - where you create methods to 'set' and 'get' properties in a class.

Another convention is that getter and setter names should match the property names.

<?php
class person {
public $name;
function set_name($new_name) {
$this->name = $new_name;
}

function get_name() {
return $this->name;
}
}
?>
Note: Notice that the getter and setter names, match the associated property name.

This way, when other PHP programmers want to use your objects, they will know that if you have a method/function called 'set_name()', there will be a property/variable called 'name'.

1 Like

Re: Let's Learn Object Oriented PHP! by timbs001(m): 10:49am On Apr 04, 2012
TUTORIAL ONE: ADVANTAGES OF OBJECT ORIENTED PHP PROGRAMMING


CODE REUSABILITY


Breaking down complex tasks into generic modules makes it
much easier to reuse code. Class files are normally separate from the main script,
so they can be quickly deployed and reused in different projects.


POLYMORPHISM

Each class and object is independent, so method and property names are intrinsically associated with
the class and any objects created from it. There’s no danger of naming conflicts, so
methods(functions) or properties(variables) can have the same name as long as they exist in different classes.

If you have two functions bearing the same name in a script written in the procedural way, it will cause a fatal error.
In OOP PHP, you can have something like:

<?php

Class A {
Public function isEmail(){
// code goes here

}

}

Class B {
Public function isEmail(){
// code goes here

}

}
?>


There will be no error arising from the above code because each isEmail() function exist in a scope of its own, i.e encapsulated.



SIMPLICITY AND READABILITY



Imagine validating user form fields and all you see in the code is the following

<?php
// use class methods to validate individual fields

$val->isInt('age');
$val->removeTags('name', 0, 0, 1);
$val->checkTextLength('comments', 5, 500);
$val->removeTags('comments', 0, 0, 1);
$val->isEmail('email');

// validate the input and get any error messages

$filtered = $val->validateInput();
$missing = $val->getMissing();
$errors = $val->getErrors();

?>



The above code is simpler and easier to read and understand as opposed to the procedural way.

The details for validation and generating error messages is safely tucked away in the classes and

Can be changed at anytime without affecting the implementations above in the client code.


PROTECTING DATA INTEGRITY WITH ENCAPSULATION:


The idea of encapsulation is to ensure that each part of an application is self-contained
and doesn’t interfere with any others, except in a clearly defined manner.

Each object will behave like a black box separate from even other objects
of the same class and the data in them can be restricted by access level .


IN TUTORIAL 2......


We will be talking about: what are classes and objects? and how to create classes and objects in PHP
Later we will move on to advanced concepts such as[b] abstract classes and interfaces and also the different ways of generating objects such as Singleton pattern and the factory pattern.[/b]

Feel free to ask questions


Happy PHPing cheesy
Re: Let's Learn Object Oriented PHP! by Nobody: 6:33pm On Apr 04, 2012
it's too early to jump into design patterns at least more should be shed on private, static,interface, abstract and mayne the new "traits" then reasons why to use PHP OOP before design patterns, design patterns for when the users is comfortable with OOP.
Re: Let's Learn Object Oriented PHP! by timbs001(m): 6:40pm On Apr 04, 2012
@pc_guru, noted. But - didn't have intention of going into that soon anyway. Thanks for the tutorial post. Guess you know much about OOP PHP too. Looking forward to more postings from you. Happy PHPing cheesy
Re: Let's Learn Object Oriented PHP! by Nobody: 6:49pm On Apr 04, 2012
yeah a lot i was reluctant at first but i did learn it,i mostly work with Frameworks and CMS so OOP for me na must, no p i had a tutorial on it somewhere let me search for it.
Re: Let's Learn Object Oriented PHP! by Nobody: 6:55pm On Apr 04, 2012
Are you a PHP programmer, are you tired of trying to manage codes, Are you still writing procedural coding style?

You’ve always wanted to learn OOP (Object Oriented Programming) but you felt why break your style of coding to something you are not conversant with, well wonder no more OOP is here to shorten the way you write codes,
change the way you view your logic, after learning OOP you will be so addicted to it, your way of thinking becomes Object Oriented.

But Before jumping the Gun, would you like to know what OOP is and how it will benefit you?
What is OOP?

Object Oriented Programming is programming approach where data, and entity are bundled together as Objects, it is a programming paradigm meant to overcome the flaws of procedural programming, they are splitted in unit to work together making the management of a Coding effective and flexible.
what makes OOP any Different from Procedural Coding ?
It emphasizes on data rather than the procedure
It makes the program modular (Breaking of codes into Modules)
It hides certain critical data to prevent access by unauthorized section
it enables communication between objects through functions
it allows new data and functions to be easily added whenever required


Advantages of OOP over Procedural
It allows Code-reusability
it provides clear modular structure for programs
it provides a good framework for code libraries where supplied software components can be easily adapted and modified by programmers


Object

Object is simply an instance of a class, to put it in simple terms an object is a clone or a copy of a Blueprint, the class has methods (functions) and properties (variables).OOP is very useful in large Projects or Project that will be upgraded over time.e.g A blueprint of a House can be viewed as an Object, it will have properties like roofType,No_of_doors,No_of_rooms,hasToilet,HasGarage and chaseTenants(),increaseRent().
Inheritance

Inheritance is a well-established programming principle, and PHP makes use of this principle in its object model. This principle will affect the way many classes and objects relate to one another.

For example, when you extend a class, the subclass inherits all of the public and protected methods from the parent class. Unless a class overrides those methods, they will retain their original functionality.

This is useful for defining and abstracting functionality, and permits the implementation of additional functionality in similar objects without the need to re-implement all of the shared functionality.

PHP Manual

In a Nutshell inheritance is the process by which an object of one class acquires the characteristics and behaviors of the objects of another class, it is however advisable to structure your code in such a way that related class can inherit from a main class.

e.g. Let’s take an instance, in my favorite game Final Fantasy Class System you can give a role of magician to an individual, so you say that person is a Magician-Class Role, it can now further be extended to variants of magicians like Fire-Magicians, Water magicians, and e.t.c each of these magicians will share the common attributes of a normal magicians and each will even their own specific magic ability. e.g. a Fire Magician can cast Fira, and a Water Magician can cast Blizzard, but a Fire Magician can never cast Ice, but they both can cast magic. I hope you get the point,this way it makes it easy rather than giving the same attributes to each class, also to save codes, always make a base class(Main Class) that has common characteristics and let the other class(extend) it.


Encapsulation

it can be referred to as the visibility of a class properties, they can be hidden from other objects, but can be accessed internally
Public Members: They can be accessed and modified by Objects/Classes
Private Members: Only visible/usable by the Class itself
Protected Members: Visible/Usable by itself and Sub-Classes(Classes Derived from the Main Class) not Objects of Sub Classes
Polymorphism

Polymorphism is an OOP characteristic that allows the programmer to assign a different meaning or usage to something in different contexts e.g. take for instance an Animal Class with a method called MakeSound(), A Dog and a Lion both will inherit the same method MakeSound() however the implementation of each Method will differ because a Dog will bark, and a Lion will Roar, Polymorphism allows a class to define it’s own implementation,and if no implementation is presented it will use the default method.
Taking a Dive………


Creating Classes
view plaincopy to clipboardprint?
[code]
class ClassName{
Implementation goes here…………
}

Constructors ?

Instances of classes are created using the “new” keyword. What happens during the “new” call is that a new object is allocated with its own copies of the properties defined in the class you requested, and then the constructor of the object is called in case one was defined. The constructor is a method named __construct() , which is automatically called by the new keyword after creating the object. It is usually used to automatically perform various initializations



e.g.


   class SampleAPP{
//PHP 4 Style
function SampleAPP(){
print ”Hello World of OOP”;
}
//PHP 5 Style
function __construct()
{
print ”Hello World of OOP”;
}
}
}


The Constructor is also the same name of the Class it is the code that is called when the Class is initialized

Tip:
Because a constructor cannot return a value, the most common practice
for raising an error from within the constructor is by throwing an exception.

Creating an Instance of a Class
view plaincopy to clipboardprint?

$sampleApp= new SampleAPP();
//Prints Hello World of OOP


How Encapsulation Works
Testing with Base Class
view plaincopy to clipboardprint?

 class SampleAPP{
public $message = ”This is a Public Announcement by Everyone”;
private $message1 =”This is Private Announcement viewed by this class”;
protected $message2=”This can only be viewed by Sub Classes not in a Subclass Object”;
public function greet1(){
print ”Public Method”;
}
private function greet2(){
print ”Private Method”;
}
protected function greet3(){
print ”Protected Method”;
}
private function printAll()
{
$this->greet1();
$this->greet2();
$this->greet3();
}
}
$SampleApp = new SampleApp();
print $SampleApp->message; //Prints the String
//print $SampleApp->message1;//Fatal Error
print $SampleApp->message2;//Fatal error
print $SampleApp->printall() ; //prints all

Testing with Child Class
view plaincopy to clipboardprint?

 class SampleAPP{
public $message = ”This is a Public Announcement by Everyone”;
private $message1 =”This is Private Announcement viewed by this class”;
protected $message2=”This can only be viewed by Sub Classes not in a Subclass Object”;
public function greet1(){
print ”Public Method”;
}
private function greet2(){
print ”Private Method”;
}
protected function greet3(){
print ”Protected Method”;
}
private function printAll()
{
$this->greet1();
$this->greet2();
$this->greet3();
}
}
class NewSampleApp extends SampleAPP //Inherits some of properties
{
function Protect()
{
print $this->message2; //this refers to the Class ”NewSampleApp”
}
}
$NewSampleApp = new NewSampleApp(); //creates an Object of NewSampleApp
print $NewSampleApp->message; //Works
print $NewSampleApp->message1; //Notice: Undefined
print $NewSampleApp->message2; //Fatal Error cannot work
$NewSampleApp->greet1();//Prints
$NewSampleApp->greet2();//Fatal Error
$NewSampleApp->greet3();//Fatal Error
$NewSampleAPP->printAll(); //Prints all strings


Static Variable

As you know by now, classes can declare properties. Each instance of the class (i.e., object) has its own copy of these properties. However, a class can also contain static properties. Unlike regular properties, these belong to the class itself and not to any instance of it. Therefore, they are often called As you know by now, classes can declare properties. Each instance of the class (i.e., object) has its own copy of these properties. However, a class can also contain static properties. Unlike regular properties, these belong to the class itself and not to any instance of it. Therefore, they are often called

Gutmans_Frontmatter PHP 5
Creating a Static Property
view plaincopy to clipboardprint?

class MyClass {
static $myStaticVar;
static $myInitializedStaticVar = 0;
}


Accessing Static Varaible
view plaincopy to clipboardprint?

MyClass::$myInitializedStaticVar++;
print MyClass::$myStaticVar;


Tip: self refers to the Class in the Current Context and parent refers to the parent class of the Sub-Class you are in

$this cannot be used to access a static variable

This is also Applicable
view plaincopy to clipboardprint?

print self::$myStaticVar;


These can only be used within a context of a class, if not the classname must be given
Static Methods

Similar to static properties, PHP supports declaring methods as static. What this means is that your static methods are part of the class and are not bound to any specific object instance and its properties. Therefore, “$this” isn’t accessible in these methods, but the class itself is by using “self” to access it. Because
static methods aren’t bound to any specific object, you can call them without creating an object instance by using the class_name::method() syntax.
view plaincopy to clipboardprint?

class Method{
static function printMsg()
{
print ”Static Called”;
}
}
print Method::printMsg();

Polymorphism in Action

Suppose we were to create an application that prints out sounds that animals make, I might be tempted to create Dog Class then create a function called bark(),then a Cat function meow(), and a lion function Roar()
view plaincopy to clipboardprint?

 class Dog{
function Bark()
}
class Cat{
function Meow()
}
class Cow {
function Moow()
}
class Rat{
function squeak()
}

What do you notice nothing wrong right, the code is actually right and it will run, but now let do something daring let’s make the sound of each animal if an object of an a particular one is created
view plaincopy to clipboardprint?

 function MakeSound($obj)
{
if ($obj instanceof Cat) {
$obj->miau();
} else if ($obj instanceof Dog) {
$obj->wuff();
}
else if ($obj instanceof Cow) {
$obj->moow();
}else if ($obj instanceof Rat) {
$obj->squeak();
}
else {
print ”Error: Passed wrong kind of object”;
}
print ”\n”;
}
$dog=new Dog();
$cat=new Cat();
MakeSound($dog);
MakeSound($cat);


To be quite Frank there’s nothing actually wrong with this code except that imagine we had a zoo application and we have 200 different animals, it will be quite cumbersome if we compared the object to 200 animals, so we are going to review the code to a better alternative
Step 1:Make a Parent Class
view plaincopy to clipboardprint?

 class Animal{
function makeSound();
{
print ”Generic Noise”;
}
}
class Dog extends Animal{
function makeSound()
{
print ”Barks”;
}
}
class Cat extends Animal{
function makeSound()
{
print ”Meow”;
}
}
class Cow extends Animal{
function makeSound()
{
print ”Moow”;
}
}
class Rat extends Animal{
function makeSound()
{
print ”Squeak”;
}
}


Printing the Sound
view plaincopy to clipboardprint?

 function MakeSound($obj)
{
if ($obj instanceof Animal) {
$obj->makeSound();
} else {
print ”Error: Passed wrong kind of object”;
}
print ”\n”;
}
MakeSound($dog);
MakeSound($cat);


As you can see OOP eliminates the need of if’s and makes a Class Check to assert if $obj is an instance of Animal and if it is it will call the MakeSound method of that class
Type Hinting

Another useful feature, this forces Objects to be Parameters of a function, when specifying the Object Parameter it does a instanceof check on the object before performing the method
view plaincopy to clipboardprint?

  public function EngineType(Automobile $auto)
{
$auto->getEngineType();
}


The Function EngineType will only accept a an object of the class Automobile and call the method getEngineType of the Automobile Class
Arrays as Parameters
view plaincopy to clipboardprint?

class PseudoCode{
public function Mail(array $setting)
{
$mail=factory::Mail($setting['to'],$setting['header'],$setting['message']);
$mail->SendMail();
}}
$ar=array(“to”=>”me@mail.com”,”header”=XHTML”,”message”=>”Pseudo Code”);
$PseudoCode=new PseudoCode();
$PseudoCode->Mail($ar);

In the Pseudo Code above it takes an array as it argument and reads the values from the array passed, this is quite essential to adopt as frameworks like CakePHP,Zend and Pear make use of arrays of arguments


Break Time

Take a break and in our part 2, we will continue with Abstractions,Interface and Magic methodsit’s advisable to create a simple class and get familiar to the concepts also make references to PHP Manual for more explanation[/code]
Re: Let's Learn Object Oriented PHP! by Nobody: 6:55pm On Apr 04, 2012
i wrote the article years ago here's the link
http://studentscircle.net/live/2011/07/learning-oop-in-php/
Re: Let's Learn Object Oriented PHP! by DualCore1: 7:29pm On Apr 04, 2012
Weldone guys. OOP is the way forward. I personally do not like to change what isn't broken if I do not think the change will improve things. I over time, had written a lot of functions into a file and all I needed to do was include that file and my turnaround time is cut short in any project so I didn't see a real need for OOP but went on to learn it and use it. OOP even made me work faster. Everyone should try it.
Re: Let's Learn Object Oriented PHP! by cr8tv: 7:38pm On Apr 04, 2012
@pc guru, God bless you for sharing this with us. I have been used to procedural php, pls which website do i download a concise course material that features oop php. I remain grateful.
Re: Let's Learn Object Oriented PHP! by bumdish: 7:48pm On Apr 04, 2012
Cool thought but I would advise you not to waste your time. Just pick up CodeIgniter (a simple elegant PHP Framework, and U can still do you classic PHP with the framework). I constraints you to OOP PHP without you even knowing. You would also enjoy the power of MVC all join. You can be up and running in 2days. Once again, I'l advise don't waste you precious time. Cheers
Re: Let's Learn Object Oriented PHP! by Nobody: 7:53pm On Apr 04, 2012
killerphp is good for OOP PHP for beginners, bumdish is right, rarely will you ever code an OOP Project from scratch OOP makes abstraction and extending classes neccessary you can learn other libraries, i use Zend and Yii as my main Frameworks but also CakePHP because of the team am working with (f***king team) cheesy but when you use these frameworks y :Dou get acquainted to OOP without evening knowing as for me i'd recommend Yii, its easy for me and Zend is for enterprise ish. but back to topic i will post on interface i just hope i can see an article or have time to write. nice work guys
Re: Let's Learn Object Oriented PHP! by timbs001(m): 7:54pm On Apr 04, 2012
wink@bumdish, nah
The advantages of OOP PHP are too immense to ignore it.
You can't work with most PHP based CMS without understanding
OOP PHP, and also Zend framework.
PHP is fast becoming a full fledged Object oriented language
As of PHP 5.4. To ignore it is to remain outdated
And miss out the advantages and features.
Never regretted learning OOP PHP.
Happy PHPing cheesy

@ Pc_guru, u are right, one can get acquinted with OOP PHP
While working with PHP frameworks.
I will recommend Zend framework or DRupal CMS those are the
Ones I work with. wink
Re: Let's Learn Object Oriented PHP! by ushafe(m): 7:55pm On Apr 04, 2012
So intersting
Re: Let's Learn Object Oriented PHP! by Nobody: 8:04pm On Apr 04, 2012
for now Zend Framework 1 is having a total rewrite and believe me Zend 1 is too compilcated and slow, i think for now Yii ,CakePHP, codeigniter is good but Yii is the fastest and the easiest that i know, to grasp first Zend Framework 2 is almost out which is a bit too complex esp with new patterns, try Yii if you don't like Yii or find it hard i'll send my real address for you to beat me up cheesy.
Re: Let's Learn Object Oriented PHP! by timbs001(m): 8:10pm On Apr 04, 2012
pc guru: for now Zend Framework 1 is having a total rewrite and believe me Zend 1 is too compilcated and slow, i think for now Yii ,CakePHP, codeigniter is good but Yii is the fastest and the easiest that i know, to grasp first Zend Framework 2 is almost out which is a bit too complex esp with new patterns, try Yii if you don't like Yii or find it hard i'll send my real address for you to beat me up cheesy.

OK, I'll try to pick up Yii once I'm free from some projects
And incase it's not as you promised, don't hesitate to send
Your real address for me to..... cheesy
Re: Let's Learn Object Oriented PHP! by Nobody: 8:12pm On Apr 04, 2012
cry ok
Re: Let's Learn Object Oriented PHP! by TrustZee(m): 8:35pm On Apr 04, 2012
Wana learn php
Re: Let's Learn Object Oriented PHP! by emonkey(m): 8:37pm On Apr 04, 2012
timbs001: Most companies nowadays hiring PHP developers are requiring knowledge of Object oriented PHP as a requisite. I have worked with many Frameworks such as PEAR, Zend Framework and also Drupal CMS and all of them are developed using object oriented Approach. Most PHP developers are still comfortable with the old procedural way of coding and are seemingly scared of the word OOP. I want us to use this medium to enlighten everyone the advantages of OOP PHP over the old procedural way and also post relevant tutorials to help pple learn. Once pple signify interest , I will also start posting tutorials also. Pls let's keep the thread Educative and dedicated to PHP cheesy

Point of correction . Drupal is not in OOP
Re: Let's Learn Object Oriented PHP! by timbs001(m): 8:41pm On Apr 04, 2012
e-monkey:


Point of correction . Drupal is not in OOP
@e_monkey, Drupal 7 and 8 (the version I work with) is written in Object Oriented PHP.(Might not be 100% OOP anyway)
Drupal is a PHP based content management system(CMS)
Thanks for dropping by the thread anyway cheesy
Re: Let's Learn Object Oriented PHP! by Nobody: 8:51pm On Apr 04, 2012
Corrections please: Drupal is a Content Management Framework and it is also a Content Management System at the same time. . . .caramba

So all the OOP jargons means that i can ehm, create a class called say goat, and now create instances of the class e.g.
$doncigalo = new GOAT('meee'); //just kidding.

So is the class the object now or the goat? I seem not to remember. . . . .caramba
Re: Let's Learn Object Oriented PHP! by member479760: 9:01pm On Apr 04, 2012
OP google it, u will find a lot of freebies. if wanna pay go lynda.com start from there.
Re: Let's Learn Object Oriented PHP! by Nobody: 9:08pm On Apr 04, 2012
Aye, that linda babe is very good seriously. I have learnt a lot of great stuffs for there.

(1) (2) (Reply)

Learn Java EE With Me / 14 Year Old Call Of Duty Hacker Hired By Microsoft - Hacking Is Not Bad Right ? / Help On Database Management System For A Hospital : Urgent

(Go Up)

Sections: politics (1) business autos (1) jobs (1) career education (1) romance computers phones travel sports fashion health
religion celebs tv-movies music-radio literature webmasters programming techmarket

Links: (1) (2) (3) (4) (5) (6) (7) (8) (9) (10)

Nairaland - Copyright © 2005 - 2024 Oluwaseun Osewa. All rights reserved. See How To Advertise. 104
Disclaimer: Every Nairaland member is solely responsible for anything that he/she posts or uploads on Nairaland.