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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

3回答

1479閲覧

php クラスの変数にアクセスできない

penpenpen

総合スコア11

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

0クリップ

投稿2021/11/28 11:50

Windows10
xampp使用
エラーの原因は echo $tom->name;であることはわかっているなければエラーはでない

はじめたて超初心者です
クラスの変数にアクセスしたいのですが なぜできないんでしょうか? この原因がわかる人教えてください
エラーを翻訳するとlasstest3.phpにオンラインでスローされました という部分があるのですがなぜオンライン?ローカルホストなのに...

<?php class Human{ protected $name; protected $age; //説明1 function __construct($name, $age) { $this ->name = $name; $this ->age = $age; } //説明2 function intro(){ echo 'My name is '.$this->name.'. My age is '.$this->age.' years old.'; } } $tom = new Human('aaaa', '3232'); $tom->intro(); echo $tom->name; ?>

表示されたもの

My name is aaaa. My age is 3232 years old. Fatal error: Uncaught Error: Cannot access protected property Human::$name in C:\xampp\htdocs\classtest3.php:34 Stack trace: #0 {main} thrown in C:\xampp\htdocs\classtest3.php on line 34

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

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

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

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

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

guest

回答3

0

ベストアンサー

クラスの変数にアクセスしたいのですが なぜできないんでしょうか?

プロパティがprotectedだからです。

PHP

1class Human{ 2 public $name;

とすれば外部から直接アクセス可能になります。
PHPマニュアル プロパティ

のサンプルコードを一通り試してみると分かりやすいと思います。

エラーを翻訳するとlasstest3.phpにオンラインでスローされました という部分があるのですがなぜオンライン?ローカルホストなのに...

{main} thrown in C:\xampp\htdocs\classtest3.php on line 34
on line 34classtest3.phpの34行目で という意味です。

投稿2021/11/28 11:59

tanat

総合スコア18713

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

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

0

php

1echo $tom->name;

ここで protectedなメンバーnameにアクセスしているのでエラー(Cannot access protected property)になります。

consoele

1Fatal error: Uncaught Error: Cannot access protected property 2Human::$name in C:\xampp\htdocs\classtest3.php:34 Stack trace: #0 3 {main} thrown in C:\xampp\htdocs\classtest3.php on line 34

投稿2021/11/28 11:59

Y.H.

総合スコア7914

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

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

0

当たり前じゃね?

つか、メッセージぐらい読みましょう

Fatal error: Uncaught Error: Cannot access protected property Human::$name in C:\xampp\htdocs\classtest3.php:34 Stack trace: #0 {main} thrown in C:\xampp\htdocs\classtest3.php on line 34 [訳] 致命的なエラー: 補足されなかったエラーです: protectedなプロパティにアクセスできません!!! C:\xampp\htdocs\classtest3.phpの34行目の、Human::$nameの方にアクセスしています。

さて、コードを見てみましょう。

PHP

1$tom = new Human('aaaa', '3232'); 2 3 4$tom->intro(); 5echo $tom->name;

となっていますが、この $tomとはなんでしょうか。 Humanクラスで生成したオブジェクトですよね。
では、$tom->nameでアクセスしているnameとやらはなんでしょうか?
そう、protected $name;ですね。……あれ? protectedなものになんで直接アクセスしているのでしょうか?

質問者さんは他人の口座を使うのが当たり前なのでしょうか?

投稿2021/11/28 12:02

BeatStar

総合スコア4958

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問