Наследование используется, когда у вас главное орудие какое-нибудь и пулемёт. Между ними много общего, это общее объединяют в базовый класс "оружие" и расширяют и конкретизируют в дочерних. Базовый класс зачастую вообще не используется в явном виде нигде.
Да, видимо не догнал маленько...
теперь получается каждый предмет оборудования должен хранить в явном виде ID корабля на котором он установлен для того чтобы обращаться к другим предметам этого корабля и делать это через
$this->Energy->get_energy($enrgy);//вот это, по идее, можно было сделать в Weapon->shoot, но тогда нужно иметь ссылку на объект Energy...
$ship[$targetID]->set_shoot($hit);
}
function set_shoot ($hit){
$this->hit+=$hit;
}
}
Но в этом случае класс Ship будет перегружен кодом, так как частично функционал оборудования нужно будет описывать в самом классе Ship (Добавление) Самогонщик То есть вот так будет правильно:?
а зачем пользоваться именно родительским ID?
пользуйтесь тем что было наседовано
через $this->ID
Вся идея в том, что объект Ship должен быть единым объектом и иметь в себе много разных методов, которые подключаются "навешиванием" всякого оборудования, и, например, выстрелив, оружие должно отнять у Ship, например, энергию, а у другому экземпляру Ship нанести повреждение. При этом хочется добиться двусторонней связью между наследниками Ship
Здравствуйте! Начинаю разбираться с ООП, и вот бьюсь уже не первый день:
задача: создать такой экземпляр класa Ship, чтобы он имел методы fly() и Shoot(), определенные в классах Weapons и Engines, свойство mass, определенное в классах Weapons и Engines, а Weapons и Engines могли пользоваться свойством ID (типа parent::$ID)
объекта Ship, определенное в его конструкторе.
Но как я не бьюсь-ничего не выходит, то дочерний класс не знает ID экземпляра родительского класса, то родительский класс не знает методов дочерних классов, в общем я окончательно запутался и зашел в тупик Помогите пожалуйста разобраться и изящным способом решить задачу
Это бред какой то ей богу... ничего не могу сообразить..
все верно Ты еще больше переменных отправь в $_POST у тебя еще больше повторений будет Я же тебе давно написал - убери foreach ($_POST as $key => $value), не надо там цикл.
$i убрал потому что у тебя все время в одно значение будут записываться разные товары. Ты мне вот что лучше поясни: когда ты кнопку "в корзину" нажимаешь - у тебя передается в post произвольное количество товаров или 1?
Я могу и не наследовать, мне даже так больше нравится. Единственное чего я пытаюсь добиться - это того чтобы классы Skills и Eq могли вызывать загрузку друг друга при необходимости и могли взаимодействовать друг с дргом и с ботом и с другими классами как внутри бота так и с аналогичными классами внутри другого бота.
И не будет выдавать. Эта строка сначала присваивает значение $_POST['price'] элементу $_POST['count'] а потом это значение присваевает элементу $_SESSION['tovar'][$_POST['name']], в итоге ты имеешь $_SESSION['tovar'][$_POST['name']]=$_POST['price'];
У тебя есть два вида решения проблеммы:
1) Хранить значение price в $_SESSION, но тебе нужно изменить структуру массива типа так
только я не пойму, откуда брется [data:private] в классе Skills? Наследуется от Bot? И как теперь из Skills создать Eq для Bot если потребуется? (Добавление)
Короче суть такова: при каждом нажатии кнопки "добавить" перезагружается страничка и приходит массив $_POST такого вида :
$_POST (Array)
['name']=1;
['col']=3;
кстати, код можно упростить, если передаются данные ОДНОГО товара. А так и есть
Нужно сделать чтобы товар, на которы я нажал. добавлялся в сессию..
Даже если я на главной нажал заказать для 5 разных товаров, чтобы все эти 5 товаров записались в сессию
А в корзине выводились все товары из сессии (которые пользователь добавил в корзину)