teratail header banner
teratail header banner
質問するログイン新規登録
PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

6回答

13580閲覧

JavaScriptコード内でPHPで設定した定数を使用したい

poooooo

総合スコア125

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1グッド

1クリップ

投稿2016/10/25 04:27

1

1

JavaScriptのコード内でPHPで設定した定数などを使用したいです。
試しにJavaScriptコード中に、<?php echo PATH; ?>というようにHTML内に書くときと同じように記述をしたら動作したのですが、こういった記述は問題ないのでしょうか?

s_tatsuki👍を押しています

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

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

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

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

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

guest

回答6

0

ベストアンサー

問題ないのでしょうか?

全く問題ないです。ただ、Javascriptのファイルにはできればjavascriptしか書きたくない(PHP(できればHTMLも)とJavascriptはファイルを分けて保存し保守性を高めるのが一般的)というのはありますので方法を一つ提案します。

私は一旦HTMLに埋め込んでjavascriptで取り出して使っています。
下記サンプルは私が書きやすいのでjQueryを使っていますが・・・

例えば
(1)PHPの変数$list1の要素数が3以上だった場合、jsでポップアップで「3以上」と表示し、10以上だった場合は同様に「10以上」と表示するコードを考えてみると、こんな感じになります。
(2)また、$list2のような連想配列もjson形式にエンコードすることで埋め込むことができます。

php

1<?php 2// (1) 3$list1 = [ 4 'a', 'b', 'c', 'd','e' 5]; 6 7// (2) 8$list2 = [ 9 'hoge' => [ 10 'foo' => 'bar', 11 ], 12]; 13?> 14 15// ~~~html書き始める~~~ 16<input type="hidden" id="list1" value="<?php echo count($list1) ?>"> 17<input type="hidden" id="list2" data-list="<?php echo json_encode($list2) ?>">

javascript

1$(function() { 2 // (1) 3 var count = $("#list1").val(); 4 if (count >= 10) { 5 alert("10以上"); 6 } else if (count >= 3) { 7 alert("3以上"); 8 } 9 10 // (2) 11 var array = $("#list2").data("list"); 12 alert(array.hoge.foo); // barと表示される 13});

同じようにすれば、質問者様の仰られているPATHを埋め込んでjsで読み込んで処理を行うことがコードは少々長くはなりますがよりキレイなコードで実現できます。(もっと良い方法もあるかもしれませんが私はこの程度しか思いつきません。)

data属性に関してはこちらがこちらが参考になります。

投稿2016/10/25 04:53

編集2016/10/26 01:37
natady

総合スコア606

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

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

poooooo

2016/10/26 02:39

ご回答くださったみなさま、ありがとうございます。 大変参考になりました。
guest

0

問題ないと思いますよ。自分もたまにやります。

定数に限らず、変数や出力するjavascriptのコードをPHPで制御することもたまにあります。
ただし、データなどはなるべくAJAXかHTMLに埋め込んでjavascriptで取得するようにしています。

投稿2016/10/25 04:34

popobot

総合スコア6588

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

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

0

JavaScriptコード自体をPHPで生成することはあまりないですが、変数宣言だけPHP出力をはめ込む、というのはちょくちょく行います。

json_encodeを使えば、そのままJavaScriptの変数宣言のところに書けて便利です。

投稿2016/10/25 04:43

maisumakun

総合スコア146674

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

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

0

jsを外部ファイル化しているのであれば拡張子phpにして
phpで吐き出してやればいいのでは?

またjsがHTMLファイル内に埋め込んでいるのであれば、同様に該当箇所を
phpで出力してやるだけです。

投稿2016/10/25 04:34

yambejp

総合スコア117936

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

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

0

フレームワーク等を使用していないPHPの場合は、問題はないですが、
テンプレートエンジン等を使用している場合は、そのルールに従うべきです。

投稿2016/10/25 04:32

himakuma

総合スコア952

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

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

0

PHPが出力するHTML内にJavaScriptコードが直接記述されているのであれば別に問題はありません。
ただ、JavaScriptを別ファイル化しないとSEO的に不利になる気がします。
また、JavaScriptはクライアントサイドで動作する為、その値がクライアント側の動作で書き換えられる可能性がある事を意識して書く必要はあります。
が、動作はしますね。

投稿2016/10/25 04:33

kunai

総合スコア5405

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

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

ShoheiTai

2016/10/25 05:02 編集

> ただ、JavaScriptを別ファイル化しないとSEO的に不利になる気がします。 「jsを別ファイルにしないとSEOで不利」という話はあまり聞いたことがないのですが、 「表示速度が低下するのでSEOで不利」という意味でしょうか?
kunai

2016/10/25 05:18

単純に無駄なコンテンツが増えるからとかそういう事です。 最近のGoogleのエンジンはJSを理解して動きますが、どこまでうまい事やってくれるかは不明ですので、対策出来るところは出来るだけ「わかりやすく」対策すべきだと思っています
ShoheiTai

2016/10/25 05:25

確かに、無駄なものを極力減らしてクローラビリティを向上させるのは重要ですね。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問