Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/34: Рейтинг темы: голосов - 34, средняя оценка - 4.85
467 / 431 / 117
Регистрация: 15.02.2012
Сообщений: 1,947

Получить значение из объекта

31.03.2016, 18:40. Показов 7136. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
я получаю такой объект
PHP
1
2
3
4
5
sk\field Object
(    
    [title:protected] => Идентификатор
    
)
как мне получить значение "Идентификатор"
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2016, 18:40
Ответы с готовыми решениями:

Как получить значение свойства объекта?
вопрос в следующем $client = new...

Получить значение объекта
Всем привет, есть вот такой объект: ( => convertECB Object ( =>...

Получить значение ключа объекта
Добрый день коллеги. Получается вот такой код import React, { Component } from 'react'; import PropTypes from 'prop-types';...

15
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
31.03.2016, 18:42
По ключу, пример:
PHP
1
2
     $a = (object)array("title"=>11);
echo $a->title;
0
467 / 431 / 117
Регистрация: 15.02.2012
Сообщений: 1,947
31.03.2016, 18:49  [ТС]
PHP
1
2
3
4
5
6
7
8
9
foreach($aaa as $key=>$val){
//в $val находится объект
//sk\field Object
//(    
//    [title:protected] => Идентификатор
//)
$a = (object)$val;
echo $a->title;
}
не работает

Добавлено через 1 минуту
Fatal error: Cannot access protected property
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
31.03.2016, 18:49
PHP
1
2
3
4
5
6
7
$d = var_export($a , 1);
$d = preg_replace( "#^.*__set_state#" , "" , $d );
 //eval($d);
 $d = '$result = '.$d.';';
 eval($d);
 
echo $result['title'];
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
31.03.2016, 18:52
Если у него нет геттера, то никак
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
31.03.2016, 19:00
Цитата Сообщение от crautcher Посмотреть сообщение
Если у него нет геттера, то никак
какая глупость

Добавлено через 33 секунды
нашел на хабре рабочий и простой код.
PHP
1
2
3
4
5
6
7
8
9
function GetAttr($obj , $attrName) {
    $getAttr = Closure::bind(function ($obj , $attrName) {
        return $obj->{$attrName};
    }, null, $obj);
    return $getAttr($obj , $attrName);
}
 
 
echo GetAttr($a , 'title');
работает как для protected так и для private

Добавлено через 15 секунд
ну и собственно https://habrahabr.ru/post/186718/
0
467 / 431 / 117
Регистрация: 15.02.2012
Сообщений: 1,947
31.03.2016, 19:08  [ТС]
Fatal error: Call to undefined method Closure::bind()
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
31.03.2016, 19:16
Цитата Сообщение от tgarl Посмотреть сообщение
Fatal error: Call to undefined method Closure::bind()
у вас какая версия php?
0
467 / 431 / 117
Регистрация: 15.02.2012
Сообщений: 1,947
31.03.2016, 19:19  [ТС]
5.3
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
31.03.2016, 19:20
Цитата Сообщение от tgarl Посмотреть сообщение
5.3
думаю это вам подойдет
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function GetAttr( $obj , $attrName ) {
    $a = (array)$obj;
    if ( isset($a[ $attrName ] ) ) {
        return $a[ $attrName ];
    }
    foreach($a as $k => $v) {
        if ( preg_match("#".preg_quote("\x00" . $attrName)."$#" , $k) !== false ) {
            return $v;
        }
    }
    return null;
}
 
 
echo GetAttr( $a , 'title' );
0
467 / 431 / 117
Регистрация: 15.02.2012
Сообщений: 1,947
31.03.2016, 19:24  [ТС]
где-то ошибка

я сделал так
PHP
1
2
3
4
5
6
7
8
function GetAttri($val , $attrName) { 
    $a = (array)$val;
    foreach($a as $kl=>$b){
        $pos=strpos($kl,$attrName);
        if ($pos!==false) {return $b;}
    }
    return false;
}
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
31.03.2016, 19:27
Цитата Сообщение от tgarl Посмотреть сообщение
где-то ошибка
канечно ошибка.
вот рабочий код. и код выше тоже рабочий надо только скопировать
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function GetAttr( $obj , $attrName ) {
    $a = (array)$obj;
    if ( isset($a[ $attrName ] ) ) {
        return $a[ $attrName ];
    }
    foreach($a as $k => $v) {
        if ( preg_match("#".preg_quote("\x00" . $attrName)."$#" , $k) !== false ) {
            return $v;
        }
    }
    return null;
}
 
 
echo GetAttr( $a , 'title' );
Добавлено через 50 секунд
lol:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function GetAttri( $obj , $attrName ) {
    $a = (array)$obj;
    if ( isset($a[ $attrName ] ) ) {
        return $a[ $attrName ];
    }
    foreach($a as $k => $v) {
        if ( preg_match("#".preg_quote("\x00" . $attrName)."$#" , $k) !== false ) {
            return $v;
        }
    }
    return null;
}
 
 
echo GetAttri( $a , 'title' );
0
467 / 431 / 117
Регистрация: 15.02.2012
Сообщений: 1,947
31.03.2016, 19:35  [ТС]
ваш код у меня возвращает array() или 1, но не текст
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
31.03.2016, 19:44
Цитата Сообщение от tgarl Посмотреть сообщение
ваш код у меня возвращает array() или 1, но не текст
да простите. код не проверял допустил ошибку с проверкой в preg_match
вот рабочий
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
<?php
namespace sk;
 
class field {
    protected $title = 'textg :D';
    private $privateTitle = 'text p :d';
}
 
namespace Afn;
 
$f = new \sk\field;
 
var_dump($f);
 
function GetAttr( $obj , $attrName ) {
    $a = (array)$obj;
    if ( isset($a[ $attrName ] ) ) {
        return $a[ $attrName ];
    }
    foreach($a as $k => $v) {
        if ( preg_match("#".preg_quote("\x00" . $attrName)."$#" , $k) ) {
            return $v;
        }
    }
    return null;
}
 
 
echo GetAttr( $f , 'title' ) , "\n";
echo GetAttr( $f , 'privateTitle' ) , "\n";
Добавлено через 19 секунд
http://sandbox.onlinephpfuncti... fdb09deb16
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
31.03.2016, 20:42
Это в какой религии принято делать поля protected, чтобы потом получать их извне через одно место?
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
31.03.2016, 20:53
WhiteMind,
Цитата Сообщение от pav1uxa Посмотреть сообщение
Это в какой религии принято делать поля protected, чтобы потом получать их извне через одно место?
+1
WhiteMind, Можно и сам PHP переписать. Ничего невозможного нет. Но protected ставят, чтобы нельзя было получить свойство. Все что вы показываете, это какой-то анти-паттерн. Хуже костылей.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.03.2016, 20:53
Помогаю со студенческими работами здесь

Получить значение из объекта класса
print_r($object); Выводит: Array ( =&gt; parser Object ( =&gt; Array ( =&gt; 1 ) =&gt; Array ( =&gt; Array ( =&gt; Текст,Текст как получить...

Получить значение свойства объекта
Здравствуйте, у меня есть небольшой кодик, основная суть: я создал структуру &quot;TRAIN&quot; с конструктором, в котором 3 свойства, а...

Получить значение реквизита из не записанного объекта
Доброго времени. Задача: Есть справочник &quot;Номенклатура&quot;, у него есть реквизит &quot;Склад&quot;. Нужно сделать так, чтобы...

Рефлексия: получить значение поля объекта
создаю объект класса Monitor; как через рефлексию получить значение поля price? public class ReflectionExample { public static...

Не могу получить значение свойства объекта
Добрый вечер! Возникла такая проблема, не могу получить значение свойства BalloonContentHeader. Подскажите, как сделать чтобы содержимое...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru