За последние 24 часа нас посетили 12554 программиста и 659 роботов. Сейчас ищут 295 программистов ...

Разные метоты в одном объекте при ооп

Тема в разделе "Прочие вопросы по PHP", создана пользователем AlNick, 5 май 2022.

  1. AlNick

    AlNick Активный пользователь

    С нами с:
    19 авг 2017
    Сообщения:
    64
    Симпатии:
    3
    Разбираюсь в ооп и возник вопрос:
    Например, есть два файла для работы с сообщениями sendmesage.php и getmesages.php. При процедурном стиле это просто два скрипта. Каждый из них содержит свою функцию.
    А при ооп это будут два метода класса Mesage. Получается, что в обоих файлах нужно создавать объект класса Mesage и вызывать нужный метод. И в каждом таком файле будет загружаться много функций, которые не используются. Ведь в классе могут быть и другие методы. Это так делается, или я что-то неправильно понял?
     
  2. antoniii

    antoniii Новичок

    С нами с:
    16 мар 2022
    Сообщения:
    277
    Симпатии:
    31
    Вот файл message.class.php
    PHP:
    1. <?
    2. class Message(){
    3. public $a;
    4. public $b;
    5. public function sendMessage($message){
    6. //код метода
    7. }
    8. public function getMessages($q){
    9. //код метода
    10. }
    11. }
    12. ?>
    а вот файл , где используется класс
    PHP:
    1. <?
    2. require "message.class.php";
    3. $msg = new Message();
    4. $msg->sendMessage('Привет');
    5. $msg->getMessages(10);
    6. ?>
     
  3. AlNick

    AlNick Активный пользователь

    С нами с:
    19 авг 2017
    Сообщения:
    64
    Симпатии:
    3
    Да, с классом всё понятно . Но я думал, что файлов, использующих класс должно быть больше. Ведь методы-то разные, они выполняют разные действия, не зависящие друг от друга. Я представляю это так: кроме класса есть ещё два файла: sendmesage.php
    PHP:
    1. <?
    2. require "message.class.php";
    3. $msg = new Message();
    4. $msg->sendMessage('Привет');
    5. ?>
    и getmesages.php
    PHP:
    1. <?
    2. require "message.class.php";
    3. $msg = new Message();
    4. $msg->getMessages(10);
    5. ?>
    Ведь методы должны вызываться в разное время. Соответственно, страница будет запускать файлы, когда нужно и вызывать требуемый метод. Или это по-другому делается и нужно использовать один файл?
     
  4. antoniii

    antoniii Новичок

    С нами с:
    16 мар 2022
    Сообщения:
    277
    Симпатии:
    31
    Можно по всякому. И в одном и в разных. Как больше нравится.
     
    AlNick нравится это.
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.451
    Симпатии:
    1.718
    Вы пытаетесь контроллер изобрести, с маршрутизатором. Есть способы маршрутизировать вызов на конкретный метод автоматом. Единая точка входа, она определяет по маршруту, какой класс создать и какой метод вызвать. Это действие называется роутинг. Можно в качестве прикола написать свой, поиграться (загуглите, их полно, таких учебных в сети). В реальном проекте либо фреймворк, либо что-то готовое пользуют обычно. Например, https://route.thephpleague.com/.

    Но так как вы показали с require тоже нормально для учебного проекта. Для реального хуже, но такие проекты до сих пор встречаются.
     
  6. AlNick

    AlNick Активный пользователь

    С нами с:
    19 авг 2017
    Сообщения:
    64
    Симпатии:
    3
    Я пытаюсь изучать ооп. И пока у меня только один вопрос - нормально ли то, что загружается класс с множеством методов, когда нужен только один метод
     
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.531
    Симпатии:
    590
    Нормально.
     
  8. Androbim

    Androbim Новичок

    С нами с:
    17 июн 2021
    Сообщения:
    49
    Симпатии:
    9
    Нормально. Только класс, сам по себе, не должен быть избыточным, "класс, который слишком много знал"...:)