質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

2回答

680閲覧

App\Model\Entity\User でクライアント情報を取得

Clementine

総合スコア157

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2018/02/01 07:52

CakePHP3でクライアントのアクセス情報の取得方法を調べています。

php

1<?php 2namespace App\Model\Entity; 3 4use Cake\ORM\Entity; 5 6/** 7 * User Entity 8 * 9 * @property int $id 10 * @property string $username 11 * @property string $password 12 * @property string $email 13 * @property string $status 14 * @property string $user_agent 15 * @property \Cake\I18n\FrozenTime $created 16 * @property \Cake\I18n\FrozenTime $modified 17 */ 18class User extends Entity 19{ 20 21 // 省略 22 23 protected function _setUserAgent($value) 24 { 25 $ua = "ユーザーエージェントを取得"; 26 27 return $ua; 28 } 29}

_setUserAgent() にてユーザーエージェントを返す方法を教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ちょっともしかすると勘違いされている可能性がありそうなので念の為補足ですが、_setメソッドは、Entityに値を代入した時に、値を操作したい時に使う仕組みです。

例えば、nameカラムがあり、名前は絶対小文字にしたい、という時には

php

1protected function _setName($name) 2{ 3 return strtolower($name); 4}

とすることで、モデルやコントローラなどで

php

1$user->name = $name;

のような感じで代入すると自動的に必ず小文字になります。

つまり、代入した時に_setメソッドが呼ばれるので、_setメソッドを用意しておけば勝手にユーザーエージェントが入ってくれる、というものではありません。

なので、モデルやコントローラで

php

1$user->user_agent = $this->request->env('HTTP_USER_AGENT');

のようにするのであれば、そもそも_setUserAgentは不要です。

投稿2018/02/01 09:01

dala00

総合スコア441

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

返したいのであればgetではないですか?

php

1protected function _getUserAgent() 2{ 3 return $this->user_agent; 4}

Entityに代入したいならsetですが。

php

1protected function _setUserAgent($userAgent) 2{ 3 return $userAgent; 4}

単にユーザーエージェントを取得したいということであればコントローラーで

php

1$this->request->env('HTTP_USER_AGENT')

だと思います。

投稿2018/02/01 08:25

dala00

総合スコア441

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Clementine

2018/02/01 08:28

「class User extends Entity」の中でユーザーエージェントを取得したいです。
dala00

2018/02/01 08:39

Entityは基本的にEntityのデータを扱うクラスなので、基本的にはコントローラなどから渡してあげた方が良いと思いますが、 env('HTTP_USER_AGENT'); や $_SERVER['HTTP_USER_AGENT']; でも直接は取れると思われます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問