userオブジェクトの配列から、ユーザIDだけを取り出したい

2020年8月19日 at 12:04

いつもお世話になっております。

たびたび質問させていただき、申し訳ございません。
現在、concrete5環境に作成したユーザでシステムへログインした際に、
マイアカウントページにおいて、ログインしたユーザの情報(具体的には
ユーザID)を取得したいと思っております。

そこで、マニュアルに従って

$u = new User();

で現在ログインしているユーザオブジェクトを取得しました。
次に、取得した内容を確認するため、

var_dump $u;

としたところ、
object(Concrete\Core\User\User)#2088 (10) { ["uID"]=> string(1) "1" ["uName"]=> string(5) "admin" ["uGroups"]=> array(2) { [2]=> string(1) "2" [1]=> string(1) "1" } ["superUser"]=> bool(true) ["uTimezone"]=> NULL ["uDefaultLanguage":protected]=> NULL ["accessEntities":protected]=> array(0) { } ["hasher":protected]=> NULL ["uLastPasswordChange":protected]=> NULL ["error"]=> string(0) "" }

と表示されました。
この中で、欲しいのは、["uName"]で表示されている"admin" だけなのでございますが、
この"admin"のみを取り出す場合、連想配列のキー’uName’を指定しましたが

Error
Cannot use object of type Concrete\Core\User\User as array

と表示され、データが取得できません。
初歩的で申し訳ございませんが、この User()で取得した配列から、uNameの部分だけ
を取得する方法をご教示いただけますと幸いです。

どうぞよろしくお願いいたします。

【環境設定】
# concrete5 Version
Core Version - 8.5.4
Version Installed - 8.5.4
Database Version - 20200609145307

# Database Information
Version: 5.1.73
SQL Mode:

# concrete5 Packages
None

# concrete5 Overrides
blocks/external_form/form/controller/tkp_menu.php, blocks/external_form/form/controller, blocks/external_form/form/tkp_menu.php, blocks/external_form/form, blocks/external_form

# concrete5 Cache Settings
Block Cache - On
Overrides Cache - On
Full Page Caching - Off
Full Page Cache Lifetime - Every 6 hours (default setting).

# Server Software
Apache

# Server API
apache2handler

# PHP Version
7.1.33

# PHP Extensions
apache2handler, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, imap, intl, json, ldap, libxml, mbstring, mcrypt, mysqli, mysqlnd, odbc, openssl, pcre, PDO, pdo_mysql, PDO_ODBC, pdo_pgsql, pdo_sqlite, pgsql, Phar, posix, pspell, recode, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, sqlite3, standard, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, wddx, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib

# PHP Settings
max_execution_time - 3600
log_errors_max_len - 4096
max_file_uploads - 100
max_input_nesting_level - 64
max_input_time - 60
max_input_vars - 1000
memory_limit - 128M
post_max_size - 384M
sql.safe_mode - Off
upload_max_filesize - 256M
ldap.max_links - Unlimited
mysqli.max_links - Unlimited
mysqli.max_persistent - Unlimited
odbc.max_links - Unlimited
odbc.max_persistent - Unlimited
pcre.backtrack_limit - 1000000
pcre.recursion_limit - 100000
pgsql.max_links - Unlimited
pgsql.max_persistent - Unlimited
session.cache_limiter - no value
session.gc_maxlifetime - 7200
soap.wsdl_cache_limit - 5
opcache.max_accelerated_files - 4000
opcache.max_file_size - 0
opcache.max_wasted_percentage - 5

タグ:

Re: userオブジェクトの配列から、ユーザIDだけを取り出したい

2020年8月19日 at 12:15
エラーメッセージの通りです。オブジェクトは配列として取り扱うことはできません。
 

Re: userオブジェクトの配列から、ユーザIDだけを取り出したい

2020年8月19日 at 12:29
ご回答ありがとうございます。

現在ログインしている、ユーザIDを取り出したいと思っておりますが、
何か方法はございますでしょうか?
 

Re: userオブジェクトの配列から、ユーザIDだけを取り出したい

2020年8月19日 at 12:33
もちろん、あります。APIドキュメントが公開されていますので、参考にしてください。
http://documentation.concrete5.org/api/8.5.2/Concrete/Core/User/User.html#method_getUserID
 

Re: userオブジェクトの配列から、ユーザIDだけを取り出したい

2020年8月19日 at 12:53
菱川さま

 APIがあったのでございますね!!

ありがとうございました。これで取得させていただきます。
 

Re: userオブジェクトの配列から、ユーザIDだけを取り出したい

2020年8月19日 at 13:32
菱川さま

ご教示ありがとうございました。
おかげさまで、お教えいただいたページを参考に、無事ユーザID
を取得できました。

$u = new User();
$uname = $u->getUserName();

$this->set('uid', $uname);

で、ビュー側にユーザIDが正常に表示できました。
ありがとうございました。