2010-03-26 2 views
0

Это тема, которая, как новичок в PHP и программировании, вызывает у меня недоумение. Я создаю фондовый рынок и хочу, чтобы пользователи добавляли свои собственные акции. Я могу ясно видеть преимущество того, чтобы каждый запас был экземпляром класса со всеми методами класса. То, что я озадачен, - лучший способ дать этому экземпляру имя, когда я его создаю. Если у меня есть:OOP - Обработка автоматизированных экземпляров класса - PHP

class Stock() { 
    ....doing stuff..... 

}

, что это лучший способ, чтобы дать моим экземплярам ему имя. Очевидно, что я могу написать:

$newStock = new Stock(); 
$newStock.getPrice(); 

или что угодно, но если пользователь добавляет запас через приложение, где можно имя этого экземпляра взялось? Я предполагаю, что при создании нового ребенка с новым $ newStock = new Stock() у вас мало вреда, а затем его хранение в БД, что приводит меня к следующему вопросу!

Что было бы лучшим способом получить 20 пользовательских акций (например) в экземплярах класса Stock()? Нужно ли создавать экземпляр 20 новых экземпляров класса Stock() каждый раз, когда пользователь входит в систему или что-то мне не хватает?

Надеюсь, что кто-то ответит на эту и более важную надежду, что куча людей ответит на это, и это как-то помогает кому-то, у кого есть трудное время, обертывание головы вокруг того, что, вероятно, ведет к действительно изящному решению. Спасибо, парни!

+0

В качестве дополнения, друг сказал мне другой вариант который должен сделать другой класс для хранения акций как группы. Класс будет удерживать каждый отдельный экземпляр акций в массиве и быть предназначенным для управления объектами в качестве группы, чтобы сохранить контроль над проектом по мере его увеличения. – dscher

ответ

0

Вы можете использовать массив запасов. Обратите внимание, что [] означает добавление нового элемента в массив.

$stocks[] = new Stock(); 

Вы можете перебрать все из них, как это:

foreach ($stocks as $stock) { 
    echo $stock->lookup(); 
} 

Вы можете получить доступ к конкретной акции, как это:

$stocks[7]->display(); 
+0

Так что я мог бы создать новый объект в массив, такой как: $ stock [AAPL] = новый Stock(); Правильно ли это? Поэтому все запасы для конкретного пользователя могут храниться в одном экземпляре $ запасов, который является всего лишь массивом? Если это так, я думаю, вы ответили на мой вопрос таким образом, которого я не ожидал, но очень люблю. Благодаря! – dscher

+0

Ваш ответ выигрывает, спасибо за легкое объяснение. – dscher

1

Я предложил бы делать что-то вроде:

class Stock() 
{ 
    public var $symbol; 

    public function __construct($symbol) 
    { 
     $this->symbol = $symbol; 
    } 

    public function lookup() 
    { 
     // do something 
     return $data; 
    } 
} 


$stock = new Stock('AAPL'); 
$data[] = $stock->lookup(); 

Таким образом, вы могли бы просто $stock->symbol = 'NEWSYMBOL';, а затем $stock->lookup();

+0

Я понимаю идею создания экземпляра. Проблема для меня заключается в том, что если пользователь добавит 3 новых запаса, все они будут созданы с переменной $ stock. Это или, как только они создаются, они попадают в БД, а затем при их извлечении мне нужно НЕ извлекать их в экземпляры, а просто в таблицу или массив. Это моя загадка заключается в том, что с помощью этого метода вы можете иметь только один экземпляр за раз, потому что единственным именем переменной является $ stock. Имеет ли это смысл? Спасибо за ответ. – dscher

+0

dscher, я думаю, мне трудно понять, что именно вы говорите, но $ stock является одним экземпляром класса Stock, хотя его можно использовать повторно для разных символов тикера. – jps

+0

Жена, спасибо за ответ.Предположим, что у меня есть 30 акций для загрузки на страницу в таблицу, следует ли снова использовать $ stock в цикл для загрузки каждого из них и отображения его? Или я бы НЕ использовал класс акций и вместо этого просто запрашивал БД и помещал данные в таблицу, а затем ТОЛЬКО создавал экземпляр, когда кто-то запрашивал конкретный запас? Большое спасибо за ответ. – dscher

0

Я не понимаю, почему вы не просто сделать объект Stock() и иметь его загрузите различные свойства запаса из базы данных. Это кажется намного более безопасным способом пойти и намного менее сложным для меня.

+0

Я бы сделал это, если бы понял способ сделать это. Означает ли это, что когда пользователь регистрирует все свои запасы, они затем создаются как новые объекты? Как называются эти новые экземпляры? Или вы создаете их только тогда, когда кто-то решает их редактировать, и необходимы методы, основанные на запасах? – dscher

+0

Вы бы установить различные свойства, например Вы могли бы написать функцию, как: функции findStock ($ символов) { $ db-> get_row ("SELECT * FROM' stock' WHERE 'stock_symbol' =«" mysql_real_escape_string ($. символ) . "'"); т.д ..... } и использовать результаты в функции, которая устанавливает детали: функции setStock ($ mySqlResults) { $ this-> имя = $ mySqlResults [ 'stock_name']; $ this-> symbol = $ mySqlResults ['stock_symbol']; } ------- или, может быть, я полностью не понял вопрос? – niggles

Смежные вопросы