php ооп доступ к св-вами объекта не через get и set'еры?

  • Автор темы Автор темы phpup
  • Дата начала Дата начала

phpup

Новичок
php ооп доступ к св-вами объекта не через get и set'еры?

Код index.php
Родительский класс:
PHP:
class FSobject { // folder or file
//properties
   public $name;
   public $size;
   public $date_create;
  /* ..... и другие св-ва объекта */

Дочерний класс:
PHP:
class FSobject_Collection extends FSobject implements Iterator  { // collection of folder or file

private $collection = array();

еще дочерний класс :
PHP:
class File_Manager extends FSobject_Collection{
.....
$this->link
........

Код index.php
PHP:
      echo "<table border=1>";
      foreach($obj as $k1 => $FSobject)
      {echo "<tr>";
         foreach($FSobject as $key => $value)
         {
          echo "<td> $value </td>";
         }
      echo "</tr>";
      }
Как в index.php вывести только например св-ва $this-name и $this-size, а не все полностью.
Чо-то запутался, ткните носом, пожалуйста :-)

p.s: get'еры и set'еры не нужны.
 
так не делают. свойства объекта должны быть private/protected

всегда нужны, когда есть строго определенное количество свойств объекта. Не хотите их делать реальными - делайте виртуальными, через __call. В дальнейшем это избавит от кучи исправлений кода, когда нужно будет делать ленивую инициализацию или выполнять какую-то логику при set или get.

Как в index.php вывести только например св-ва $this-name и $this-size, а не все полностью
не использовать foreach?
 
через магический метод языка __call, который вызывается в случае, если вызывается метод, не определенный в классе. Но в данном случае __call не нужен. В данном случае class FSobject содержит фиксированный набор свойств, которые являются частью объекта. Они должны быть сокрытыми,а доступ к ним должен осуществляться через методы.
 
Как нужно делать:
PHP:
class FSobject { // folder or file 
//properties 
   private $name; 
   private $size; 
   private $date_create;
Нужно писать три функции: public GetName(), public GetSize(), public GetDate_create() ?
 
В дальнейшем это избавит от кучи исправлений кода, когда нужно будет делать ленивую инициализацию или выполнять какую-то логику при set или get.
А так же, позволит перегрузить в наследнике.
 
А какой смысл в наследовании FSobject_Collection от FSobject, если это коллекция, содержащая массив объектов FSobject?
И почему private, а не protected?
 
Сверху