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

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

ただいまの
回答率

90.51%

  • PHP

    20367questions

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

  • Zend Framework

    72questions

    Zend Frameworkは、PHP5で記述されたWebアプリケーションフレームワークです。Zend Frameworkには守らなければならない開発の規定というものは存在せず、MVCなどの複数のコンポーネントを提供しています。

PHPとクラスプロパティ

解決済

回答 2

投稿

  • 評価
  • クリップ 2
  • VIEW 187

nvcpg_198

score 14

Zend FrameworkのZend_Config_Iniってのがありますが
これでiniファイルに書いたプロパティが使えるようになってます。

; 運用環境の設定データ
[production]
webhost                  = www.example.com
database.adapter         = pdo_mysql
database.params.host     = db.example.com
database.params.username = dbuser
database.params.password = secret
database.params.dbname   = dbname

; 開発環境の設定データは、運用環境のデータを継承したうえで
; 必要に応じて値を上書きします
[staging : production]
database.params.host     = dev.example.com
database.params.username = devuser
database.params.password = devsecret


↑みたいにiniファイルに書いてると、
phpファイルの中でdatabase.params.dbnameという
プロパティが使えるようになっていますが、
PHPはクラスのプロパティを動的に追加できるのですか?

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

気になったので調べてみました。

phpのマニュアルでは「プロパティの動的追加」に関して明記している箇所は見つけられませんでした。

http://php.net/manual/ja/language.oop5.properties.php

Web検索で「php クラス プロパティ 動的追加」としてみると、複数のページでプロパティの動的追加ができることが記載されていることを確認できます。

http://www.phppro.jp/qa/3575
https://code.i-harness.com/ja/q/b1482d
http://gom.hatenablog.com/entry/20090330/1238370757

明確な根拠を見つけることはできませんでしたが、
自前環境で確認したところ、プロパティの動的追加は動作するようです。

  • test.php
<?php

$hoge = new HogeClass;
$hoge->piyo = 'piyo';   // プロパティを動的に追加

echo $hoge->fuga."\n";  // もともとあるプロパティの参照
echo $hoge->piyo;       // 動的に追加したプロパティの参照

class HogeClass
{
    public $fuga = 'fuga';
}
$ php -v
PHP 7.1.14 (cli) (built: Feb  7 2018 18:33:30) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

$php test.php
fuga
piyo

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/30 01:56

    ありがとうございます。

    キャンセル

0

こういうときはマニュアルを読みましょう。

INI 形式のファイルに保存された設定データを、Zend_Config を通じてオブジェクトのプロパティとして扱えるようにします

フレームワークのソースを読んだわけではないですが、
あくまでiniファイルの中身をとってくるようにZend_Config_Iniクラスができている だけに思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.51%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    Zend_Validatorのメッセージカスタマイズについて

    バリデータのエラーメッセージをカスタマイズして表示させたいのですが、変数が存在しない場合に、NotEmptyの判定でデフォルトのエラーメッセージが表示されます。 $spec=

  • 解決済

    MVCのコントローラーってどうやって動いてるのですか?

    他人がZendFrameworkを使って作ったプログラムを見ていますが、 Controllerがどのように動いているのかよくわかりません。 コンストラクトされていない(?)

  • 解決済

    ZendFrameworkのsetOptionsに文字列での選択肢を追加したい

    前提・実現したいこと 実現したいことは、よくあるselectタグのoptionに文字列での選択肢を追加したいと考えています。 選択肢としましては、MrとMisの二つから選択でき

  • 受付中

    zend DB接続について

    Zendフレームワーク1.8をつかっているのですが、 mysqlにつなぐ際に--local-infile=1というオプションをつけたいのですが、 configなどにそれを記載す

  • 解決済

    self::と$this->の使い分け

    外部のパートナー企業から納めて頂いたコードで、疑問があります。 前提 PHP5 ZendFramework1 普段はCakePHPを使っている :-)

  • 解決済

    更新処理が行われた場合だけ、リクエストパラメータを保存する仕組みを作りたい

    現状の問題を以下に箇条書きでまとめさせていただきました。 何卒ご一読いただけますと幸いです。 環境 PHP 5.3 Zend Framework 1.11.14 My

  • 受付中

    zendframework2でエラー

    お力をお貸し頂ければ幸いです。 前任者がgit管理していたプロジェクトを引き継ぎまして、 エラーエラーでデバッグ環境が出来ておりません。 ググりつつ作業しているのですが、

  • 解決済

    php 継承関係について

    お世話になっております。 PHPの継承の関係について質問させてください。 ある理由がありまして、継承先から継承元にメソッドを渡したいのですがどうしたら良いでしょうか。 元のファ

同じタグがついた質問を見る

  • PHP

    20367questions

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

  • Zend Framework

    72questions

    Zend Frameworkは、PHP5で記述されたWebアプリケーションフレームワークです。Zend Frameworkには守らなければならない開発の規定というものは存在せず、MVCなどの複数のコンポーネントを提供しています。