BG Development


  Reply to this topicStart new topicStart Poll

> Използване на свойство от един метод в други
Marko4123
Публикувано на: 21-08-2018, 19:44
Quote Post



Име:
Група: Потребител
Ранг: Посетител

Мнения: 65
Регистриран на: 04.05.10



Здравейте, искам да ви попитам такъв подход правилен ли е? В един клас имам няколко метода. Например в метод едно "А" давам да върне стойност А. След това искам да използвам тази стойност А в метод C и D и използвам следния подход:

CODE
class MyClass {

public a;

public function methodA () {
   $this->a = 'A';
}

public function methodB() {

}

public function methodC() {
  $this->methodA();
  return $this->a;
}

public function methodD() {
 $this->methodA();
  return $this->a;
}
}


Това е просто пример, но искам да се науча как да взимам свойства от един метод и да ги използвам в други методи в самия клас. Благодаря предварително за отговора icon_smile.gif
PMEmail Poster
Top
saruman
Публикувано на: 21-08-2018, 20:01
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2104
Регистриран на: 21.07.10



http://php.net/manual/en/language.oop5.visibility.php

Декларираш си я private,инициализираш си я,и си я ползваш свободно в целият скоуп на класа,ако мислиш да я модифицираш,тогава я слагаш в метод,само за четене няма смисъл


--------------------
http://www.wefunkradio.com/radio/

Remember,remember the fifth of November
PMEmail Poster
Top
Marko4123
Публикувано на: 21-08-2018, 20:10
Quote Post



Име:
Група: Потребител
Ранг: Посетител

Мнения: 65
Регистриран на: 04.05.10



Стойността и искам да се взима динамично и да се променя, спрямо други неща и затова я слагам в метод. И се чудих дали подходът ми е правилен?
PMEmail Poster
Top
saruman
Публикувано на: 21-08-2018, 20:19
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2104
Регистриран на: 21.07.10



QUOTE (Marko4123 @ 21-08-2018, 20:10)
Стойността и искам да се взима динамично и да се променя, спрямо други неща и затова я слагам в метод. И се чудих дали подходът ми е правилен?

Да!

п.с.всеки външен достъп за четене и писане върху променливата на класа е редно да се ограничи до минимум

Това мнение е било редактирано от saruman на 21-08-2018, 20:22


--------------------
http://www.wefunkradio.com/radio/

Remember,remember the fifth of November
PMEmail Poster
Top
7bH5ypIdk9Ij
  Публикувано на: 25-11-2018, 09:45
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 17
Регистриран на: 25.11.18



По принцип всеки код който ти тръгва е "верен" и "правилен" само че вече след това 2ро ниво е тоя код как е откъм поддръжка, колко лесно се чупи от невнимателно ползване и т.н. ето как бих го направил аз

(Между другото изумен съм че форум за програмисти няма highlighting на кода.. icon_eek.gif )

CODE
class MyClass {

public a;

  public function methodA () {
      //do something
      return 'A';
  }

  public function methodB() {

  }

  public function methodC() {
      /// do something  
      return $this->methodA();
  }

  public function methodD() {
     return $this->methodA();
  }
}


Oще по-добър вариант е да си кръщаваме методите със имена които описват какво правят а не просто букви (може би ти е вече практика, но може би не е така че още една идея за четим и лесно поддържан код:

methodA да се казва getA() или примерно ако имаш клас който ти работи с потребители би изглеждал така


CODE


class User {

   public function getFirstName() {
           // взимаме го от някъде, БД или друг източник
           return $firstName;
    }

   public function getLastName(){
         // взимаме го от някъде, БД или друг източник
         return $lastName;
   }
   
   public function getFullName() {
         return $this->getFirstName().' '.$this->getLastName();
   }

}




ако искаш да не го взима всеки път от базата данни отделно може да се добави и кеширане на стойностите в private променлива за класа както каза колегата по-горе

CODE


class User {
   private $firstName = null;
   private $lastName = null;

   public function getFirstName() {
           if ($this->firstName !== null) {
               return $this->firstName;
            }
           // иначе го взимаме от някъде и
           $this->firstName = $sourceOfFirstName;
           return $this->firstName;
    }

   public function getLastName(){
            if ($this->lastName!== null) {
               return $this->lastName;
            }
           // иначе го взимаме от някъде и
           $this->lastName= $sourceOfLastName;
           return $this->lastName;
   }
   
   public function getFullName() {
         return $this->getFirstName().' '.$this->getLastName();
   }

}




Спирам да си фантазирам какво може да искаш да постигнеш с тоя клас. Ти ще кажеш ако трябва повече идеи icon_smile.gif

Това мнение е било редактирано от 7bH5ypIdk9Ij на 25-11-2018, 09:51
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2018 | BG Development | All Rights Reserved
RSS 2.0