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

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

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

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

Q&A

解決済

3回答

1065閲覧

functionで定義したphpのメソッドを、別のファイルで同じfunctionコードを記入せずに使いたい

Nishin

総合スコア30

PHP

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

0グッド

1クリップ

投稿2019/08/26 06:26

前提

HTMLとCSS、PHPのメソッドを使って、入力した変数に対応した定型文を出せるメソッドで「自作デジタルノート」を、いくつか作ろうと思っています。
最初に作成したノートでは、定義のコードを「<?php function メソッド(){~~~}; ?>」と書き連ねて、その下に定義したメソッドをphp内で入力して、定型文を出力していました。

しかし、以後のファイルでこれと同じことをしようとすると、修正箇所ができた場合に、どのファイルも該当修正箇所を探して書き直さなくてはならず、非常に時間がかかってしまう事が予想されます。

試したこと

「methodNote.php」 <?php function title($title){ $title=htmlspecialchars($title) ; echo "<div style=' text-align:center; margin:5px auto; font-weight:bold; font-size:20px; border-top: 2px solid #ff99ab; border-bottom: 2px solid #ff99ab;'>{$title}</div>"; }?> <?php function blind($sentens){ $sentens=htmlspecialchars($sentens) ; echo "<label><input type='checkbox'> <span style='font-weight:bold' ;>{$sentens}</span> </label>"; }?> <?php function instead($not,$instead){ $not=htmlspecialchars($not) ; $instead=htmlspecialchars($instead) ; echo "<span style='text-decoration:line-through; font-weight:bold'>{$not}</span>..."; echo "<span style='color:red; font-weight:bold'>じゃなくて</span>"; echo "<label><input type='checkbox'><span style='color:red; font-weight:bold'>{$instead}</span></label>です。<br>"; }?> <?php function reason($what,$why,$which){ $what=htmlspecialchars($what) ; $why=htmlspecialchars($why) ; $which=htmlspecialchars($which) ; echo "きっと、<span style='color:red; font-weight:bold'>{$what}</span>"; echo "でしょう。<label><input type='checkbox'><span style='color:red; font-weight:bold'>{$why}</span></label>"; echo "からです。<br>"; if($which==""){echo "";}else{ echo "<span style='font-weight:bold'>{$which}</span>"; echo "を通じてそう考察しました。"; } }?> <?php function fukabori($detail,$roots){ $detail=htmlspecialchars($detail) ; $roots=htmlspecialchars($roots) ; echo "<br>さらに補足すると、"; echo "<label class='detail'><input type='checkbox'><span style='color:green; font-weight:bold'>{$detail}</span></label>"; echo "だそうです。<br>"; if($roots==""){echo "";}else{ echo "これは"; echo "<span style='color:blue; font-weight:bold'>{$roots}</span>"; echo "を通じて知ったことです。"; } }?> <?php function when($matter){ $matter=htmlspecialchars($matter) ; if($matter==""){echo "";}else{ echo "<p style="display: inline-block; margin-left: 10px;">"; echo "<br>これを知った時、<span style='font-weight:bold'>{$matter}</span>ました。<br>"; echo "</p>"; } }?>

上記のように単体のファイルにしてまとめたコードを、「<?php require('methodNote.php'); ?>」や「<?php include('methodNote.php'); ?>」を使って添付して、その下でそこに定義されたメソッドを呼び出し、変数にも入力したい文字列を打ち込んだのですが、**ブラウザで確認しても何も出力されませんでした。**その為、解決策を模索しております。

実現したいこと

すべてのファイルのbody内に「<?php function メソッド(){~~~}; ?>」と同じ定義コードを載せるのではなく、どのファイルでもこの「methodNote.php」を読み込んで、定義されたメソッドを出力できるようにしたいのです。

どうか、サポート宜しくお願いします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

Syntax Errorがあります。
イメージ説明

文字列をくくる"の中に"があるためですね。
エスケープシーケンスをつけるかどちらかをシングルクォーテーションに変更してください(外側を変更する場合は変数展開にご注意を)

蛇足:
phpは<?php~?>に囲われたところ以外はそのまま出力します。

PHP タグ

終了タグの後に余分な空白や改行があると、予期せぬ挙動を引き起こす場合があるからです。 余分な空白や改行のせいで PHP が出力バッファリングを開始し、その時点の内容を意図せず出力してしまうことになります。

ので、間に?>で何度も切られていますが、今の状態だと空行が沢山出力されることになります。
全て削除されるのを強くすすめます。
定義しかないので<?phpも冒頭だけで充分です。

初心者を戒めるPHP#テンプレートとロジックは分けろ

あとPHPファイルは <?php 〜 ?> で囲まなきゃいけないとか思ってるなら顔を洗って出直してきてくれ。テンプレートエンジンじゃないんだからクラス定義しかしないファイルに ?> なんて書く必要あるわけないだろ。

あとは適切にフォーマット掛けて見やすくしましょう。
(IDEのフォーマット機能を使うと便利です)

php

1<?php 2 3 4function title($title) 5{ 6 $title = htmlspecialchars($title); 7 echo "<div style=' 8 text-align:center; 9 margin:5px auto; 10 font-weight:bold; 11 font-size:20px; 12 border-top: 2px solid #ff99ab; 13 border-bottom: 2px solid #ff99ab;'>{$title}</div>"; 14} 15 16function blind($sentens) 17{ 18 $sentens = htmlspecialchars($sentens); 19 echo "<label><input type='checkbox'> 20 <span style='font-weight:bold' ;>{$sentens}</span> 21 </label>"; 22} 23 24function instead($not, $instead) 25{ 26 $not = htmlspecialchars($not); 27 $instead = htmlspecialchars($instead); 28 echo "<span style='text-decoration:line-through; font-weight:bold'>{$not}</span>..."; 29 echo "<span style='color:red; font-weight:bold'>じゃなくて</span>"; 30 echo "<label><input type='checkbox'><span style='color:red; font-weight:bold'>{$instead}</span></label>です。<br>"; 31} 32 33function reason($what, $why, $which) 34{ 35 $what = htmlspecialchars($what); 36 $why = htmlspecialchars($why); 37 $which = htmlspecialchars($which); 38 echo "きっと、<span style='color:red; font-weight:bold'>{$what}</span>"; 39 echo "でしょう。<label><input type='checkbox'><span style='color:red; font-weight:bold'>{$why}</span></label>"; 40 echo "からです。<br>"; 41 if ($which == "") { 42 echo ""; 43 } else { 44 echo "<span style='font-weight:bold'>{$which}</span>"; 45 echo "を通じてそう考察しました。"; 46 } 47} 48 49function fukabori($detail, $roots) 50{ 51 $detail = htmlspecialchars($detail); 52 $roots = htmlspecialchars($roots); 53 echo "<br>さらに補足すると、"; 54 echo "<label class='detail'><input type='checkbox'><span style='color:green; font-weight:bold'>{$detail}</span></label>"; 55 echo "だそうです。<br>"; 56 if ($roots == "") { 57 echo ""; 58 } else { 59 echo "これは"; 60 echo "<span style='color:blue; font-weight:bold'>{$roots}</span>"; 61 echo "を通じて知ったことです。"; 62 } 63} 64 65function when($matter) 66{ 67 $matter = htmlspecialchars($matter); 68 if ($matter == "") { 69 echo ""; 70 } else { 71 echo "<p style=\"display: inline-block; margin-left: 10px;\">"; 72 echo "<br>これを知った時、<span style='font-weight:bold'>{$matter}</span>ました。<br>"; 73 echo "</p>"; 74 } 75} 76

あと細かいところですがhtmlspecialchars()は出力時、そのときにしたほうが良いですね。

php

1 if ($matter == "") { 2 echo ""; 3 } else { 4 echo "<p style=\"display: inline-block; margin-left: 10px;\">"; 5 echo "<br>これを知った時、<span style='font-weight:bold'>".htmlspecialchars($matter)."</span>ました。<br>"; 6 echo "</p>"; 7 }

投稿2019/08/26 06:42

編集2019/08/26 06:43
m.ts10806

総合スコア80850

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

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

Nishin

2019/08/26 11:06

詳細部に至るまで、ご指摘及びご指導下さり、ありがとうございました。 この度、皆様からご指摘頂いた、ダブルクォーテーションになっていた箇所を、シングルクォーテーションに修正した他、includeメソッドの中身を修正したらうまくいきました。 (<?php include('methodNote.php'); ?>を、<?php include('./methodNote.php'); ?>としてみました。) 思うに、このincludeメソッドの記述が一番の曲者だったのかもしれません。 改めて、皆様には御礼申し上げます。
m.ts10806

2019/08/26 11:58

今はinclude地獄にならないようにautoloderやその仕組みを使ったcomposerが主流です。 オブジェクト指向になればnamespaceで各機能を管理したりするので、そちらもご検討ください。
guest

0

以下の部分でエラーになっていませんか?
echo "<p style="display: inline-block; margin-left: 10px;">";
ダブルクォートを使っているのでエスケープさせましょう。
もしくは以下のようにシングルクォートなら大丈夫だと思います。

php

1 <?php function 2 when($matter){ 3 $matter=htmlspecialchars($matter) ; 4 if($matter==""){echo "";}else{ 5 echo "<p style='display: inline-block; margin-left: 10px;'>"; 6 echo "<br>これを知った時、<span style='font-weight:bold'>{$matter}</span>ました。<br>"; 7 echo "</p>"; 8 } 9 }?>

投稿2019/08/26 06:39

mayoi_maimai

総合スコア1583

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

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

Nishin

2019/08/26 10:59

ご指摘ありがとうございます。 そちらの行を修正してから、phpでincludeメソッドを利用して外部のphpを引用してくる方法を、自分で調べてみて、ようやく解決しました。 今後は今回教えて頂いたノウハウとともに、Web開発で積極的に活かしていく次第です。
guest

0

この行が間違っているので動いていないだけと思われます。

diff

1 <?php function 2 when($matter){ 3 $matter=htmlspecialchars($matter) ; 4 if($matter==""){echo "";}else{ 5- echo "<p style="display: inline-block; margin-left: 10px;">"; 6+ echo "<p style='display: inline-block; margin-left: 10px;'>"; 7 echo "<br>これを知った時、<span style='font-weight:bold'>{$matter}</span>ました。<br>"; 8 echo "</p>"; 9 } 10 }?>

投稿2019/08/26 06:42

guissy-k

総合スコア245

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

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

Nishin

2019/08/26 10:59

ご指摘ありがとうございます。 そちらの行を修正してから、phpでincludeメソッドを利用して外部のphpを引用してくる方法を、自分で調べてみて、ようやく解決しました。 今後は今回教えて頂いたノウハウとともに、Web開発で積極的に活かしていく次第です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問