Это может быть невозможно, но было бы полезно знать в любом случае.Ссылка PHP-ключ объекта как параметр функции
Я ищу использовать метод для запуска процесса, который повторяется в пользовательском классе, который я написал.
Одним из параметров функции, Target, необходимо обратиться к ключу объекта в $ значений, поэтому ниже фрагмент кода, это относится к $ ценностно> Target.
public function format_array($post_id, $object, $values, Target, $meta_value) {
$array = (array) $object;
$feed_values = array();
if (!empty($array)) {
foreach ($values as $value) {
$feed_values[] = $value->Target;
}
}
unset($array);
$db_values = get_post_meta($post_id, $meta_value, true);
$result = array_diff($feed_values, $db_values);
if (!empty($result)) {
$this->update_post_meta($post_id, $meta_value, $feed_values);
}
}
Я знаю, что этот код в настоящее время сломана ...
Можно ли это сделать?
EDIT
Ссылаясь на $ ценностно> Target, где $ значение является примером объекта ниже, я пытаюсь получить доступ к 'комментарий', так что $ ценностно> Комментарий:
object(stdClass)#411 (33) {
["Facilities"]=>
object(stdClass)#413 (1) {
["FacilityInfo"]=>
array(6) {
[0]=>
object(stdClass)#414 (4) {
["ID"]=>
string(21) "xxxxx"
["PropertyID"]=>
string(21) "xxxxx"
["Name"]=>
string(5) "xxxxx"
["Comment"]=>
string(9) "xxxxx"
}
[1]=>
object(stdClass)#415 (4) {
["ID"]=>
string(21) "xxxxx"
["PropertyID"]=>
string(21) "xxxxx"
["Name"]=>
string(15) "xxxxx"
["Comment"]=>
string(20) "xxxxx"
}
}
}
["Photos"]=>
object(stdClass)#420 (1) {
["PhotoInfo"]=>
array(5) {
[0]=>
object(stdClass)#421 (6) {
["ID"]=>
string(21) "xxxxx"
["PropertyID"]=>
string(21) "xxxxx"
["MainPhoto"]=>
bool(true)
["Name"]=>
string(8) "xxxxx"
["Type"]=>
string(5) "Photo"
["PhotoUrl"]=>
string(94) "xxxxxx"
}
[1]=>
object(stdClass)#422 (6) {
["ID"]=>
string(21) "xxxxx"
["PropertyID"]=>
string(21) "xxxxx"
["MainPhoto"]=>
bool(false)
["Name"]=>
string(2) "xxxxx"
["Type"]=>
string(5) "Photo"
["PhotoUrl"]=>
string(94) "xxxxxxx"
}
}
}
}
Пример того, как в настоящее время выглядит мой рабочий метод, но я хотел бы, чтобы не допустить того, чтобы повторно использовать это для 3 различных значений:
$array = (array) $letmc->Facilities;
$comments = array();
if (!empty($array)) {
foreach ($letmc->Facilities->FacilityInfo as $Facility) {
$comments[] = $Facility->Comment;
}
}
unset($array);
$property_comments = get_post_meta($post_id, 'property_comments', true);
$result = array_diff($comments, $property_comments);
if (!empty($result)) {
$this->update_post_meta($post_id, 'property_comments', $comments);
}
$array = (array) $letmc->Photos;
$photos = array();
if (!empty($array)) {
foreach ($letmc->Photos->PhotoInfo as $Photo) {
$photos[] = $Photo->PhotoUrl;
}
}
unset($array);
$property_photos = get_post_meta($post_id, 'property_photos', true);
$result = array_diff($photos, $property_photos);
if (!empty($result)) {
$this->update_post_meta($post_id, 'property_photos', $photos);
}
'Target' Свойство объекта должен иметь' public' доступа, чтобы позволить вам получить доступ к нему из-за пределов определения класса.Лучшей альтернативой будет создание общедоступного метода доступа для получения этого значения, поэтому у вас будет что-то вроде: '$ value-> getTarget()'; – NaijaProgrammer
Вы можете использовать волшебный метод '__get()' для извлечения членов класса переменных: http://stackoverflow.com/questions/4713680/php-get-and-set-magic-methods – CD001
@NaijaProgrammer Может ли кто-либо из вас использовать ваши ответы, и я отметю правильно ... Я не совсем понимаю, как подойти к любому решению –