php_modが非推奨になったのね

昔のバージョンのphp環境でphpバージョンを上げるという対応中。 apache + PHP8のインスタンスを構築してドキュメントルートまで到達を確認。 対応する人にドキュメントルートまで到達するからプロジェクトのファイルを置いてバージョンアップのエラーを確認してもらうため依頼しましたが HTTP 503 Service Unavailable のエラーが出ているとのこと。 HTMLファイルはアクセスできているからPHPの実行ができていないと思い調べると Apache HTTP サーバーで使用するために PHP に提供されている mod_php モジュールが非推奨になりました。 php-fpmをインストールして起動し、リクエストを流してphp-fmpでphpを実行するようにして解決。 しばらくPHPを触っていなかったのでモジュールが非推奨になったことに気づかずでした。

php simpleXmlElementにオブジェクトついて

php simpleXmlElementにオブジェクトついて


環境的にはphp7のLAMP環境です。(php以外は詳しい情報は特にいらないと思ったので記述なし)
データ取得時にオブジェクトからデータを取るときに一瞬『ん?』となったのでメモ

$xmlstr = <<< XML
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<Documents>
    <Document>
        <name>私はエンジニアです</name>
        <type>コツコツ</type>
        <age>1</age>
    </Document>
</Documents>
XML;

例えばこんなXMLがあったとします。
そうするとXML文字列を引数にSimpleXMLElementでオブジェクトを作成

$xml = new \SimpleXMLElement($xmlstr);

var_dump($xml);
出力 → object(SimpleXMLElement)#38 (1) { ["Document"]=> object(SimpleXMLElement)#43 (3) { ["name"]=> string(27) "私はエンジニアです" ["type"]=> string(12) "コツコツ" ["age"]=> string(1) "1" } }

こんなデータオブジェクトが出来上がるんですが例えばageの要素を取得したいときに

var_dump($xml->Document->age);
出力 → object(SimpleXMLElement)#50 (1) { [0]=> string(1) "1" }

こうなるんです

『ん?』

まあいいですオブジェクトですもんね。でもこのあとどうとったらいいの??
もちろん$xml->Document->age[0]こうでも$xml->Document->age->0でもないわけです


どうやって取るんだ?って一瞬思いましたが昔(7年ほど前かな)使っていたのをすぐ思い出しました!

配列に型変換して扱っていました。
var_dump((array)$xml->Document->age);
出力 → array(1) { [0]=> string(1) "1" }

なにか処理するんであればまとめてやっちゃったほうがいいかもしれませんね。

var_dump((array)$xml->Document);
出力 → array(3) { ["name"]=> string(27) "私はエンジニアです" ["type"]=> string(12) "コツコツ" ["age"]=> string(1) "1" }


ちなみに一つのデータをピンポイントで使いたいなら
var_dump((string)$xml->Document->age);
出力 → string(1) "1"
こうなるので便利です

以上備忘録メモでした

コメント

このブログの人気の投稿

nginxで画像が表示されない。。

AWSのS3バケットをマウントするs3fsでマウントが外れた件

CakePHP3でHTTPSにする