Винаги съм използвал обекти - но не поставям данните директно от заявката. Използвайки функции "set" създавам оформлението и така избягвам проблеми с обединяването и сблъсъците с имена. В случая на вашия пример за 'full_name' вероятно бих използвал 'as', за да получа частите от името, да задам всяка в обекта и да предложа 'get_full_name' като член fn.
Ако се чувствате амбициозни, бихте могли да добавите всякакви неща към 'get_age'. Задайте рождената дата веднъж и от там се развихряйте.
РЕДАКТИРАНЕ:Има няколко начина да направите обекти от вашите данни. Можете да дефинирате предварително класа и да създавате обекти или да ги създавате „в движение“.
--> Някои v опростени примери -- ако това не е достатъчно, мога да добавя още.
в движение:
$conn = DBConnection::_getSubjectsDB();
$query = "select * from studies where Status = 1";
$st = $conn->prepare( $query );
$st->execute();
$rows = $st->fetchAll();
foreach ( $rows as $row )
{
$study = (object)array();
$study->StudyId = $row[ 'StudyId' ];
$study->Name = $row[ 'StudyName' ];
$study->Investigator = $row[ 'Investigator' ];
$study->StartDate = $row[ 'StartDate' ];
$study->EndDate = $row[ 'EndDate' ];
$study->IRB = $row[ 'IRB' ];
array_push( $ret, $study );
}
предварително дефинирано:
/** Single location info
*/
class Location
{
/** Name
* @var string
*/
public $Name;
/** Address
* @var string
*/
public $Address;
/** City
* @var string
*/
public $City;
/** State
* @var string
*/
public $State;
/** Zip
* @var string
*/
public $Zip;
/** getMailing
* Get a 'mailing label' style output
*/
function getMailing()
{
return $Name . "\n" . $Address . "\n" . $City . "," . $State . " " . $Zip;
}
}
използване:
$conn = DBConnection::_getLocationsDB();
$query = "select * from Locations where Status = 1";
$st = $conn->prepare( $query );
$st->execute();
$rows = $st->fetchAll();
foreach ( $rows as $row )
{
$location = new Location();
$location->Name= $row[ 'Name' ];
$location->Address = $row[ 'Address ' ];
$location->City = $row[ 'City' ];
$location->State = $row[ 'State ' ];
$location->Zip = $row[ 'Zip ' ];
array_push( $ret, $location );
}
След това по-късно можете да преминете през $ret и да изведете пощенски етикети:
foreach( $ret as $location )
{
echo $location->getMailing();
}