Момци не се карайте бре!
Незнам дали @...Evil го е схванал, но реално, той питаше " каква ни е файдата на тия сетове и гетове, като правят същото нещо " .
(Обяснението е малко нубско, но логиката е точно такава!)
Значи файдата/разликата от тях е следната.
В единия случей когато е публичен, всеки ама всеки, който изпълни скрипта( php файла), ще може да промени това свойство. Как ще го направи няма значение(бъг, хак или просто хардкодване). Но той ще може да го направи - т.е. той има достъп до това свойсто директно в скрипта(той = всеки). И щом има достъп, ще може да промени стойността му или характеристиките му, по правилно казано.
Т.е. Обекта наистина не му дреме, кой ще му промени свойствата в дадена инстанция. Това е когато е публик.
----------------------------------------------------------------
Обаче, когато дадено свойство на обекта стане прайвит -тогава само обекта може да си го променя сам или само обекта може да разреши на някой да го промени(т.е. ако обекта може да разреши промяна на свойството според някаква проверка, но за да се достъпи, ние питаме обекта преди това - дали може).
Така че действията, който са разрешени са само вътре в класа.
И след това когато класа стане обект в паметта, само от методите написани в класа, ще им позволи смяната на привейт свойството евентуално след проверка.
При този случей си го представи(обяснението пак е грешно, но логиката е тази), все едно при публик не се иска " парола " , а при прайвит се иска " парола " .
И тази " парола " всъщност ти е я проверката в метода, я някакво условие и пр.
Надявам се немного ясното ми обяснение да помогне на някой.
Ако трябва и примерна схема ще начертая