Object Oriented PHP Best Practices
oop, php
Solution
Using explicit getters and setters for properties on the object (like the example you gave for `set_name`) instead of directly accessing them gives you (among others) the following advantages:
- You can change the 'internal' implementation without having to modify any external calls. This way 'outside' code does not need change so often (because you provide a consistent means of access).
- You provide very explicitly which properties are meant to be used / called from outside the class. This will prove very useful if other people start using your class.
The above reasons is why this could be considered best practice although it's not really necessary to do so (and could be considered overkill for some uses ; for example when your object is doing very little 'processing' but merely acts as a placeholder for 'data').
Problem
Say I have a class which represents a person, a variable within that class would be $name. Previously, In my scripts I would create an instance of the object then set the name by just using: ``` $object->name = "x"; ``` However, I was told this was not best practice? That I should have a function set_name() or something similar like this: ``` function set_name($name) { $this->name=$name; } ``` Is this correct? If in this example I want to insert a new "person" record into the db, how do I pass all the information about the person ie $name, $age, $address, $phone etc to the class in order to insert it, should I do: ``` function set($data) { $this->name= $data['name']; $this->age = $data['age']; etc etc } ``` Then send it an array? Would this be best practice? or could someone please recommend best practice?