Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
11 / 11 / 13
Регистрация: 25.04.2012
Сообщений: 1,163

Работа с классом

20.08.2014, 22:58. Показов 745. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите разобратся как работать с классом ShopProductWriter.


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
class ShopProduct {
 
    private $title;
    private $produserMainName;
    private $produserFirstName;
    protected $price;
    private $discount = 0;
 
    function __construct($title, $mainName, $firstName, $price){
                                                                
        $this->title = $title;
        $this->produserMainName = $mainName;
        $this->produserFirstName = $firstName;
        $this->price = $price;
        $this->numPages = $numPages;
        $this->playLength = $playLength;
    }
 
    public function getProduserFirstName(){
        return $this->produserFirstName;
    }
 
    public function getProduserMainName(){
        return $this->produserMainName;
    }
 
    public function setDiscount($num){
        $this->discount = $num;
    }
 
    public function getDiscount(){
        return $this->discount;
    }
 
    public function getTitle(){
        return $this->title;
    }
 
    public function getPrice(){
        return ($this->price - $this->discount);
    }
 
    public function getProduser() {
        return "{$this->produserFirstName}"
                ."{$this->produserMainName}";
    }
 
    public function getSummaryLine(){
        $base = "$this->title (  $this->produserMainName  , ";
        $base .= "$this->produserFirstName  )";
        
        return $base;
    }
 
}
 
 
 
class ShopProductWriter {
 
        private $products = array();
 
        public function addProducts( shopProduct $shopProduct ) {
 
            $this->products[] = $shopProduct;
 
        }
 
        public function write(){
 
            $str = "";
 
            foreach($this->products as $shopProduct) {
 
                $str = " {$shopProduct->title} : "
                      .  $shopProduct->getProduser()
                      ." ({$shopProduct->price})";
            }
 
            print $str;
        }
    }

с классом ShopProduct всё понятно

PHP
1
2
3
4
5
6
7
8
9
$product1 = new ShopProduct('Собачее сердце', 'Булгаков', 'Михаил', '0');  // и дальше обращаюсь к любым его методам всё ок работает.. 
 
// Не понимаю как работать с ShopProductWrite , пробовал по разному вот один из варианто ( не работает ) 
 
$writer = new ShopProductWriter();
 
$add = $writer->addProducts($product1);
 
print $add->write();
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.08.2014, 22:58
Ответы с готовыми решениями:

Работа с классом Rmail
В книге Колисниченко Д. Н." РНР и MySQL. Разработка Web-приложений". прочитал: "Поддержка классов HtmlMimeMail и HtmiMimeMaii5 на...

Работа с классом tcpdf
В моей форме есть таблица с несколькими строками и двумя столбцами, при выводе в pdf таблица неправильно выводится, исчезает 2-ой столбец и...

Работа с классом
Итак, продолжаю изучать С, на этот раз волею судьбы закинуло в С#. Проблема. Есть некий класс. Необходимо сделать массив классов и...

7
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
21.08.2014, 08:58
В ShopProductWriter вы используете свойства $shopProduct->title и $shopProduct->price которые защищены и недоступны в ShopProductWriter. сделайте их public.
можно получить доступ к этим свойствам через методы-геттеры, если не хотите давать полный доступ

Не по теме:

Не отключайте вывод ошибок и предупреждений и многие вопросы не будут возникать

1
11 / 11 / 13
Регистрация: 25.04.2012
Сообщений: 1,163
21.08.2014, 11:02  [ТС]
ads, поставил на убунте apache со всеми вытекающими и не как не получается настроить вывод ошибок в php.ini всё как бы ок, в файле котором пишу тоже включаю строку

PHP
1
error_reporting(-1);
Добавлено через 9 минут
и даже если все свойства делаю public ничего не работает
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
21.08.2014, 11:28
Вот код, с исправлениями в коментах
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
        class ShopProduct {
 
            public $title;
            private $produserMainName;
            private $produserFirstName;
            public $price;
            private $discount = 0;
 
            function __construct($title, $mainName, $firstName, $price) {
 
                $this->title = $title;
                $this->produserMainName = $mainName;
                $this->produserFirstName = $firstName;
                $this->price = $price;
                $this->numPages = 10; // $numPages;//не определена перемнная 10 - от фонаря
                $this->playLength = 10; // $playLength;//не определена перемнная
            }
 
            public function getProduserFirstName() {
                return $this->produserFirstName;
            }
 
            public function getProduserMainName() {
                return $this->produserMainName;
            }
 
            public function setDiscount($num) {
                $this->discount = $num;
            }
 
            public function getDiscount() {
                return $this->discount;
            }
 
            public function getTitle() {
                return $this->title;
            }
 
            public function getPrice() {
                return ($this->price - $this->discount);
            }
 
            public function getProduser() {
                return "{$this->produserFirstName}"
                        . "{$this->produserMainName}";
            }
 
            public function getSummaryLine() {
                $base = "$this->title (  $this->produserMainName  , ";
                $base .= "$this->produserFirstName  )";
 
                return $base;
            }
 
        }
 
        class ShopProductWriter {
 
            private $products = array();
 
            //public function addProducts(shopProduct $shopProduct ) {
            //!!!!!!ShopProduct и shopProduct - разные классы указывайте тип аргумента правильно
            public function addProducts(ShopProduct $shopProduct) {
                $this->products[] = $shopProduct;
            }
 
            public function write() {
 
                $str = "";
 
                foreach ($this->products as $shopProduct) {
 
                    $str = " {$shopProduct->title} : "
                            . $shopProduct->getProduser()
                            . " ({$shopProduct->price})";
                }
 
                print $str;
            }
 
        }
 
        $product1 = new ShopProduct('Собачее сердце', 'Булгаков', 'Михаил', '0');
        $writer = new ShopProductWriter();
 
        $add = $writer->addProducts($product1); //метод ичего не возвращает,
//зачем вы пытаетесь присвоить его результат переменной?
// print $add->write(); $add - не объект, работать не будет
 
        $writer->write(); //это работает
1
11 / 11 / 13
Регистрация: 25.04.2012
Сообщений: 1,163
21.08.2014, 11:58  [ТС]
ads, круто работает, спасибо за пояснения) Не подскажите как организовать сам вывод созданных продуктов если их много.

PHP
1
2
3
$product1 = new ShopProduct('Собачее сердце', 'Булгаков', 'Михаил', '0');
$product2 = new ShopProduct('Собачее сердце', 'Булгаков', 'Михаил', '0');
$product3 = new ShopProduct('Собачее сердце', 'Булгаков', 'Михаил', '0');
метод addProducts массив выходит как туда добавить продукты разом или по отдельности:?
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
21.08.2014, 13:55
Цитата Сообщение от sendxt Посмотреть сообщение
как организовать сам вывод созданных продуктов если их много
у вас он уже организован в методе write. Разве что продукты стоит разделить тегом <br>. Если продуктов так много что на странице уже невозможно в них разобраться, то ключевое слово для поиска "пагинация".
Цитата Сообщение от sendxt Посмотреть сообщение
метод addProducts массив выходит как туда добавить продукты разом или по отдельности
В Вашей реализации добавление происходит по одному продукту. Можно изменить этот метод добавив в нем проверку аргумента с помощью функции is_array . Если аргумент не массив - используете уже существующий код, если это массив, то перебираете элементы массива и добавляете их по очереди. как-то так.

Добавлено через 4 минуты
Ну и убрать в этом методе жесткое указание типа аргумента, ведь он может быть продуктом, а может быть массивом продуктов
1
11 / 11 / 13
Регистрация: 25.04.2012
Сообщений: 1,163
21.08.2014, 13:59  [ТС]
ads, ага понял спасибо) ещё хотел спросить абстрактные классы и интерфейсы важная тема много,часто используется?
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
21.08.2014, 14:02
Цитата Сообщение от sendxt Посмотреть сообщение
абстрактные классы и интерфейсы важная тема
обязательная.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.08.2014, 14:02
Помогаю со студенческими работами здесь

Работа с классом
Работа с классом, карточку отдела кадров(обеспечить вывод на экран в удобном виде, печать сообщения при достижении пенсионного возраста)....

Работа с классом
Необходимо написать класс который будет переводить из 16-ой системы счисления числа в 10-ю систему счисления, классы только неделю назад...

работа с классом
Напсал код: #include &lt;IOSTREAM&gt; #include &lt;fstream&gt; #include &quot;rus.h&quot; #include &quot;work.h&quot; using namespace std; class Temperatura ...

Работа с классом
Задача про классы - Описать класс дробей — рациональных чисел, являющихся отношением двух целых чисел. Предусмотреть методы сложения,...

Работа с классом
Ребята подскажите как правильно исправить ошибку что бы компилировался код public class Begin { public...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru