20210109のPHPに関する記事は10件です。

PHP学習(Mac導入)

はじめに

はじめまして、初投稿になります
私はテックキャンプと言う今、良い意味でも悪い意味でも話題になっているプログラミングスクールに通っております
今回知的好奇心からPHPを学習する事にしたのそこでメモがわりとして記録したいと思います

PHPとは?

PHPとはjavaやrubyと言ったサーバーサイドを構築する上で必要なスプリクト言語です
PHPはHTML内に記述する事ができます
例えば

print('PHPを勉強中です!');
?>

と記述しMAMPを起動すると”PHPを勉強中です!”と表示されます
といきなりMAMPと書きましたがトンチンカンになるので次でMAMPについて説明します

MAMPとは?

MAMPとは「Macintosh」「Apache」「MySQL」「PHP」の頭文字をとったものです
つまり、PHPとMySQLをローカル環境で開発できちゃうんですね

ruby on railsで言う

rails db:create
rails s
http://localhost:3000/

でローカル環境を開けるものみたいですね
ターミナル使わない分ちょい楽ですね笑

環境構築

  • MAMPのインストール

で、そのMAMPはどうすれば手に入るんだよって話ですが
https://www.mamp.info/en/windows/
上のサイトから
TRY NOWの項目からOSのアプリをダウンロードしインストールするだけでいいみたい

インストール中パスワード求められるからそいつも入力でOK

  • DBの設定
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

この記述をテキストエディター(私はvscode)に記述し
アプリケーション→MAMP→conf内にmy.cnfと言う名前で保存

これで一連の環境が完了しました

  • PHPファイルの保存

MAMP内のhtdocsに起動する為のPHPファイルを作りましょう
ここでは仮にPHPフォルダーを作成し、その中にsample01.phpと言うファイルを作成します
これで起動準備ができました

  • 起動
http://localhost:8888/php/sample01.php

これによって先ほど作ったPHPファイルがローカル環境で動きました
この8888は

8210f2aa30665328ab36549421c647f7.png

8888の数字はポート番号みたいですね
私はそのままですが変更したらlocalhost:~の数字もこれに合わせるのでしょうか?

~ php/sample01.php

このポート番号以降の記述は先ほどhtdocsで保存したファイルの場所ですね
PHPフォルダー内のsample01.phpを起動しなさいみたいな指定をするわけです

最後に

今回初めてQiitaに投稿しました
正直私は文章作成能力がとんでもなく低く、まだ学習開始と言う部分で至らない点もあります
もし間違えていたらお知らせください

以上

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ECCUBE4で多言語化プラグインを作ってみた

こんにちは!

kamotetuと申します

久しぶりの投稿になります

今回はタイトルの通りECCUBE4で多言語化プラグインを作ってみたということで紹介したいと思います。

↓リポジトリ
CrossBorder1

eccubeの対応バージョンは4.0.4 ~ 4.0.5で、4.0.3では動かないことを確認しています

ということでgithubに公開しましたのでよかったら試してみてください!
(試作品ですので完全自己責任のもと利用してください!)

↓インストール、有効化後の挙動(画像悪くてすみません)
ezgif.com-gif-maker (1).gif

ezgif.com-gif-maker (2).gif

画像は商品登録ですが、他にもタグやカテゴリなどもできます(出来なかったらすいません!)

正直プラグイン開発の練習ということで去年の秋ごろまで作ってたものなのですが、githubのreadmeにも書いてある通り危ない箇所がたくさんあったので途中で開発を中止したものになります

なんで今頃公開したかというと、eccubeのQ&Aサイトに多言語化にする方法の質問があったのでコードを含め紹介しようと思い記事にしました

それで、コードの説明もしたいところですが、ファイルの数も多いので主要な処理をしているアクションだけご紹介します

ヘッダーの言語選択で多言語にしている処理

CrossBorder1/Event/EventListener.php
public function onKernelRequest(GetResponseEvent $event)
{
...
}

多言語保存処理

CrossBorder1/Event/SaveContentEventSubscriber.php
public function postFlush(PostFlushEventArgs $args)
{
...
}

是非githubからダウンロードして確認してみてください

作りは非常に力技の部分が多いですが、多言語化カスタマイズしようと思っている方の参考になれば幸いです!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【PHP】API実行ツールを作ってみよう(その1)

はじめに

PHPでツール作成の三回目です。
今回はPHPを使ってAPIツールを作成していきたいと思います。
クライアント側(データ送信)とサーバ側(データ受信)があるので、それぞれ作成していきます。

クライアント

クライアント側はChrome拡張機能のTalend API Tester を使用します。

1.Talend API Tester へアクセスし、右上の「Chromeに追加」のボタンを押下しインストール

qiita_01.png

2.Chromeの拡張機能にTalend API Testerが追加されているのでアイコンをクリック
qiita_02.png

3.このような画面が表示されれば起動成功です
qiita_03.png
本来であればこの後、このツールを使ってサーバへの送信URLやパラメータを設定していくのですが、
まだサーバ側が出来ていないので一旦クライアントはここまでとします。

サーバ

続いてサーバ側を作成していきます。
こちらがPHPになります。

1.「c:¥xampp¥htdocs」フォルダに「api」フォルダを作成します
qiita_04.png

2.「api」フォルダ内に「server.php」ファイルを作成します
中身は下記になります

server.php
<?php

// パラメータチェック
if( !isset($_REQUEST['name']) ){
    echo "Error:nameパラメータが存在しません";
    exit;
}
$name = $_REQUEST['name'];

// クライアントからのデータをテキストファイルへ出力
// ※ファイル名が被らないようにするため、現在日時+ミリ秒でファイル名を生成
$outputFile = "".date("Y-m-d_His")."_".substr(explode(".", (microtime(true) . ""))[1], 0, 3).".txt";
file_put_contents( $outputFile, $name );

// レスポンス
echo "Success";
?>

コード解説

  • 2~6行目・・クライアントから送られてきているパラメータが存在しているかチェックし、存在しなかったらエラーメッセージを表示し終了しています。
  • 7行目・・クライアントからの送信データを取得しています。
  • 9~12行目・・クライアントからの送信データをテキストファイルへ出力しています。
  • 14~15行目・・クライアントへレスポンスを返しています。

クライアント(続き)

これでサーバ側が出来たので、クライアントからサーバに対してデータを送信してみましょう。

1.Talend API Testerを起動し、MY DRIVEの右側の「⋮」を押し、「Add a project」ボタンを押下
qiita_cl_01.png

2.プロジェクト作成ダイアログが開くので、Name欄に「API」、その下のチェックボックスを外し、「Create」ボタンを押下
qiita_cl_02.png

3.MY DRIVEに「API」が出来るので、右側の「⋮」を押し、「Add a request」ボタンを押下
qiita_cl_03.png

4.リクエストパラメータをセット
①「GET」を選択します
②「https://localhost/api/server.php」と入力します
③「QUERY PARAMETERS」を押下し、下の入力欄に「name」「テスト」と入力します
④URLの末尾に「?name=テスト」が追加されることを確認します
⑤「Send」ボタンを押下します
qiita_cl_04.png

クライアント動作確認

・「Send」ボタン押下後、画面下のResponseに「200 OK」が表示されていて、
右下の「BODY」に「Success」と表示されていれば成功しています
qiita_cl_05.png

サーバ動作確認

1.実行日時のファイル名でテキストファイルが作成されていることを確認
qiita_sv_01.png

2.テキストファイルを開き、「テスト」の文字列が記載されていることを確認
qiita_sv_02.png

最後に

このようなAPI実行は実際の業務でも割と使うことがあるかと思います。
次回は、クライアント部分をPHPを使って作成したいと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ローカル環境でDrupalを起動するなら、quick-startコマンドが便利

Mac OSのローカル環境でDrupalを起動する最速の方法が見つかりました。

要件

PHP 7.3 以上

ダウンロード

まずComposer経由でDrupalをダウンロードし、作業ディレクトリに移動します。Composerはバージョン1でも2でもどちらでも可能です。

$ composer create-project drupal/recommended-project my-drupal
$ cd my-drupal

インストール&ログイン

作業ディレクトリに移動したら、以下のコマンドを打ちます。

$ php web/core/scripts/drupal quick-start standard     # composer未使用の方は→ php core/scripts/drupal quick-start standard

他に引数に指定できるのは demo_umami(フードマガジンのデモサイト)、minimal(最低限のモジュールがインストールされたもの)があります。

ブラウザで自動的に http://localhost:8888 にアクセスされます。これで気軽にDrupalを色々いじれますよ!

Screen Shot 2021-01-09 at 13.32.14.png

Composerが未インストールの方は、Drupal.orgからZipファイルをダウンロードすることで同様のことが実現できます。Composer経由でダウンロードする場合とZipファイルではドキュメントルートが異なるので、quick-startコマンドを実行するパスにご注意ください。

$ mkdir my-drupal
$ cd my-drupal
$ curl -sSL https://www.drupal.org/download-latest/tar.gz | tar -xz --strip-components=1
$ php core/scripts/drupal quick-start standard

今までローカルで簡易的にDrupalを起動するのにPHPのビルドインの簡易サーバー(php -S)を直接実行していたのですが、うまくいかない部分があったので、やはりコンテナ(DDEVやLandoなど)使うしかないのか・・でも少し立ち上げに時間がかかるしなぁ・・と感じていていて色々ググったところ、quick-startコマンドを見つけました。と言っても、このコマンドが紹介されているEvaluator Guideは前から知っていたのですが、Umamiデモサイト以外のインストールプロファイルを選択できるのは知りませんでした!

web/core/scripts/drupal ファイルから、web/core/lib/Drupal/Core/Command/ ディレクトリのQuickStartCommand.phpファイル、InstallCommand.phpファイルが順で呼び出されます。
インストールプロファイルは、 web/core/profiles/ ディレクトリと web/profiles/ ディレクトリ(ディストリビューションのプロファイルはこちらのディレクトリに格納される)内から探索され、隠しプロファイル(xx.info.ymlのhidden値がtrueとなっているもの)を除いたインストールプロファイルが選択可能と見なされます。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel Eloquentで作る「いいね」数ランキングリスト

はじめに

メディア系サイトを構築している際、ユーザーや投稿をランキング形式で取得したい場合があるかと思います。
ランキングの基準を「いいね」数にしている場合投稿いいねを別テーブルにし、リレーションを設定するのが一般的だと思います。
リレーション先のいいね数をカウントしてソートします。

何が問題か?

Laravel Eloquentを用いてソートを実装する場合orderByを使用します。

ProductController.php
public function list()
    {
        $products = Product::with('likes')->orderBy(Product::CREATED_AT, 'desc')->paginate();
        return $products;
    }

orderByはテーブルのカラムを利用して(第一引数)降順・昇順(第二引数)を決定します。
そのためcount()を用いて「いいね」数を取得してもそれはカラムではないため、orderByできません。

実装

withcount()を使用します。引数に取得したいリレーションテーブル名を入れると'○○_count'というデータをカラム扱いとして取得できます。この値はカラム扱いなため、きちんとorderByできます。

ProductController.php
public function list()
    {
        $products = Product::withCount('likes')->orderBy('likes_count', 'desc')->paginate();
        return $products;
    }
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PHP基礎 -比較演算子をマスターする-

比較演算子の種類

PHPでは以下の比較演算子があり、各条件に該当する場合はtrueを、該当しない場合はfalseを返します。

条件
\$x < $y \$xは$y未満
\$x <= $y \$xは$y以下
\$x > $y \$xは$yより大きい
\$x >= $y \$xは$y以上
\$x == $y \$xと$yは等しい
\$x === $y \$xと$yは厳密に等しい
\$x != $y \$xと$yは等しくない
\$x !== $y \$xと$yは厳密に等しくない

==と===の違い

==は値が等しいかのみを検証しているのに対し、===は値とデータ型の2つが等しいかを検証しています(!=と!==も同様)。そのため、以下のようなケースでは異なる値が返ってきます。

$x = 1; #integer型

$y = '1'; #string型

$x == $y;
#=> true

$x === $y;
#=> false

$x != $y;
#=> false

$x !== $y;
#=> true

この違いを理解して使い分けないと、エラーや予期しない動作の原因となります。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PHP基礎 -算術演算子をマスターする-

PHPでは基本的な四則演算ができる算術演算子を使うことができます。

$i = 1 + 1;

$i = 1 - 1;

$i = 8 * 2;

$i = 8 / 2;

$i = 3 % 2;

効率的に開発を進めるため、再代入をする際に省略系で書くこともできます。

$i += 1;

$i -= 1;

$i *= 2;

$i /= 2;

さらに、+1と-1の再代入は繰り返し処理などで特に多用することのなるため、以下のように書くこともできます。

$i++;

$i--;
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PHP artisanコマンドを適当に

Laravel サーバが起動
$php artisan serve --host=$IP --port=$PORT

キャッシュクリアコマンド
$php artisan cache:clear

コマンドのリストを表示
$php artisan list

tinker起動
$php artisan tinker

Laravelのバージョン確認
$ php artisan --version

$ php artisan -v

make
$php artisan make:作りたい種類 ファイル名 --オプション

作成したマイグレーションを実行してテーブルを新規作成
$php artisan migrate

1つ前のマイグレーション操作に戻します
$php artisan migrate:rollback

メンテナンスモードの実行
$php artisan down

メンテナンスモード ⇒ 通常モード
$php artisan up

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

プロキシ 意味

プロキシ 高速なアクセスや安全な通信など確保するための中継サーバー

プロキシの仕組み
1.内部クライアントからリクエストを送る。

2.プロキシサーバーが中継して目的にサイトにリクエストを出す。

3.プロキシサーバーがクライアントに返事を返す。

4.サイトが閲覧出来る。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PHP composer 意味

composer パッケージ依存管理ツール
沢山の処理・機能が入ったライブラリを使うことがありそれをまとめて管理している。

パッケージ まとまったライブラリ

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む