PHP関連のことを調べてみた2022年08月25日

PHP関連のことを調べてみた2022年08月25日

PHPのインスタンス変数の中にオブジェクトは入ってない

# 概要

– 忘れないようにインスタンス変数の内容について簡単にまとめる。

# インスタンス変数の中にオブジェクトは入ってない

– [オブジェクトと参照](https://www.php.net/manual/ja/language.oop5.references.php)を読んでいたら下記のような内容が書いてあった。

:::note info
PHP では、オブジェクト変数の値にオブジェクト自身は含まれません。
含まれるのはオブジェクトの ID のみで、 これを用いて実際のオブジェクトにアクセスできるようになっています。
:::

– ようはオブジェクト変数にはオブジェクトそのものは格納されていない。
– 別の領域に作られたオブジェクトのIDだけがオブジェクト変数に格納されているようだ。

元記事を表示

PHP オブジェクトと参照を読んでみた

# 概要

– PHPのマニュアルの[オブジェクトと参照](https://www.php.net/manual/ja/language.oop5.references.php)を読んでみたので自分なりにまとめてみる。

# 今の自分の知識量

– オブジェクトは参照渡しとはちょっと違うけど似たような振る舞いをすることは知っている。

# 内容

– 「オブジェクトはデフォルトで参照渡しになります!」とよく言われるけど、厳密に言うと少し違うらしい。
– オブジェクト変数の値にオブジェクトそのものは格納されない。格納されているのはオブジェクトのIDのみ。
– PHPではオブジェクトのIDを用いてオブジェクトにアクセスできるようになっている。
– だからオブジェクト変数を他の変数に更に格納したりしてもオブジェクトのIDが他の変数に格納されるだけなのでオブジェクトIDを用いてオブジェクトを参照すると同じオブジェクトを参照する。
– なのでインスタンス変数の値を他の変数に格納してもオブジェクトID値がコピーされる。結果として同じオブジェクトを指すようになっているだけ。
– 参照渡し:参照先情報

元記事を表示

過去の自分のコードを修正してみる – PHP カレンダー編③

# 前回までのまとめ
これを

“`php

\n

\n

\n

“;
$t++;
} elseif (($t == 1) or ($t == 2)) {
print “

“;
$t++;
} else {
print “

“;
$t = 0; //次の段へ
}

“`

こうした

“`php

if ($t === 0) :
?>

PHPをVSCodeで実行できない

前提
Xammpはインストール済み
xammpフォルダ内のhtdocsフォルダ下にtestフォルダを作成。そのなかにtest.phpファイルを作成

実行したこと
ブラウザにて、http://localhost/test/test.phpを入力して、実行

結果
404 not found

エラー解消のためにやったこと
キャッシュの削除
chrome://net-internals/#hstsにアクセスして、Delete domain security policiesの項目からlocalhost またはlocalhost:8888と入力してDeleteを実行
・・・この操作はlocalhostでのアクセス時、httpが自動でhttps(httpをSSLでアクセスするもの)に変換されていることがあるためそれを削除した。
=>test.phpは開けるようになったが、localhostのURLが開けない。というかlocalhost入力時、後ろに/tutorialが付与され、リダイレクトしてしまう。



結果わかったこと
おそらくDockerが原因でした。PHPの環境構築前に試しに

log_errors を off としているのに、 PHP のエラー出力が行われる