プラカンブログSTAFF BLOG

2017.08.23

WebデザイナーもPHPを覚えよう!PHP初心者講座【よく使うサンプル付き】

PHP

こんにちは。
6月から入社した新人の関と申します。

現職での本職はWebデザイナーですが、前職ではPHPプログラマーとして働いていたこともあり、今回はPHPについて書こうと思います。

最近は、Webデザイナーの方々でもWordPressを触ったりしてPHPを書くことも多くなってきています。
しかし、この「呪文みたいのなんなの?」となる方も多いと思います。
そろそろPHPを覚えようと、なかなか手をつけられてない方もいるかと思います。

そこで、一緒にPHPを覚えましょう!

PHPのインストール方法は割愛しますので、
「xampp」など、PHPが動く環境を用意してください。

変数

変数とはプログラムの処理に代入できるものです。

例えばこのようにします。

<?php $food = 'カレー'; ?>

例えば「food」という変数に「カレー」という文字列を代入します。

まず、PHPを書くには「<?php 命令文 ?>」と書きます。

次に、変数の先頭には「$」を付けます。
「カレー」という文字列には「’」(シングルコーテーション)または「”」(ダブルコーテーション)で囲みます。
最後に命令の終わりには「;」を付けます。

そしてHTMLに表示させる「echo(エコー)」で「$food」を表示させます。

今日の晩御飯は<?php echo $food; ?>です。

すると実行結果は「今日の晩御飯はカレーです。」と表示されます。

配列

変数には、さらにデータを格納することができます。
それが配列です。

<?php $curry = array(
  'チキンカレー',
  'ポークカレー',
  'キーマカレー',
); ?>

呼び出し方は以下になります。3番目のキーマカレーを呼び出してみましょう。

私の好きなインドカレーは<?php echo $curry[2];?>です。

これ実行すると「私の好きなインドカレーはキーマカレーです。」になります。

ここで覚えて欲しいのがプログラミングの数字の順番は0番目から始まることです。
したがって、キーマカレーは3番目では無く、2番目になりますので「 [2] 」と書きます。

If文

if文は条件に応じた処理を書くことができます。

例えばこのように書きます。

if(条件) {
	何らかの処理
}

例えば「もし12時だったら『お腹すいた』と表示」させる文を書きます。

<?php 
$hour = date('G');
if($hour == 12 ) {
	echo 'お腹すいた';
} ?>

変数「$hour」が12だったら、「お腹すいた」と表示されます。
「=」は1つではなく2つになります。

「date(‘G’)」のdate関数については省略しますが、興味持った方はPHPの公式ドキュメントで調べてください。

http://php.net/manual/ja/function.date.php

比較演算子を覚えよう

上記で出てきた「==」は比較演算子と言います。
比較演算子はPHPでもJavaScriptでも、どの言語でも使いますので覚えましょう!

比較演算子 説明
X == Y 等しい
X != Y 等しくない
X > Y XがYより大きい
X >= Y XがYより大きいまたは等しい
X < Y XがYより小さい
X <= Y XがYより小さいまたは等しい

foreach文

スクラッチでCMSを組んでるとデザイナーが触るHTMLのテンプレートによくforeach文は出てきます。
foreach は、配列を反復処理するためのものです。

先程のカレーの配列を使います。

<?php $curry = array(
  'チキンカレー',
  'ポークカレー',
  'キーマカレー',
); ?>

下記の様にforeach文を書きます。

各カレーのメニューを改行して表示させてみましょう。

<?php 
foreach ($curry as $row) {
	echo $row. '<br>';
} ?>

実行結果は
「チキンカレー
ポークカレー
キーマカレー」
となります。

以上がPHPのよく使う基本的な文です。

個人的によく使うコード

ここからは実案件で実際によく使うPHPのコード紹介します。

CSSのファイル名にクエリー文字列を付けでキャシュを回避する

CSSのキャシュを回避するためにCSSのファイル名の後ろに、PHPで自動的にタイムスタンプを付けます。

<link rel="stylesheet" href="/css/style.css?v=<?php echo filemtime("css/style.css")?>">

filemtime関数はファイルの更新時間を取得します。

表示結果

<link rel="stylesheet" href="/css/style.css?v=1500711212">

また、絶対パスでタイムスタンプを取得する場合は以下のコードになります。

// DOCUMENT_ROOTを使う場合
<link rel="stylesheet" href="/css/style.css?v=<?php echo filemtime($_SERVER['DOCUMENT_ROOT']."/css/style.css"); ?>">
// realpathを使う場合
<link rel="stylesheet" href="/css/style.css?v=<?php echo filemtime(realpath(dirname(__FILE__)).'/css/style.css'); ?>">

WordPressの場合は以下のように、get_stylesheet_directoryでテーマのディレクトリを取得します。

<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); echo '?v=' . filemtime( get_stylesheet_directory() . '/style.css'); ?>">

ヘッダーやフッターなど共通部分はインクルードにする

ヘッダーやフッターなど共通の部分は、別のファイルにしてインクルードにしたほうが、運用はラクですよね。

「include」ディレクトリの「header.php」を読み込む場合のコードです。

<?php include('include/header.php'); ?>

ユーザーエージェントでスマートフォンとPCで振り分ける

レスポンシブも良いですが、phpでサーバー側で振り分ける方法です。

$ua = $_SERVER['HTTP_USER_AGENT'];
if ((strpos($ua, 'Android')) && (strpos($ua, 'Mobile')) || (strpos($ua, 'iPhone')) || (strpos($ua, 'Windows Phone'))) {
	// スマホ用ページにリダイレクト
        header('location: sp.php');
		exit();
	} else {
    	// PC用にページにリダイレクト
		header('location: pc.php');
		exit();
}

いかがでしたか?
ぜひスキルアップを目指してWebデザイナーの方でもプログラミングに挑戦してみてください。

seki

この記事は、SEKI が書きました。