- 投稿日:2021-01-09T22:33:11+09:00
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は8888の数字はポート番号みたいですね
私はそのままですが変更したらlocalhost:~の数字もこれに合わせるのでしょうか?~ php/sample01.phpこのポート番号以降の記述は先ほどhtdocsで保存したファイルの場所ですね
PHPフォルダー内のsample01.phpを起動しなさいみたいな指定をするわけです最後に
今回初めてQiitaに投稿しました
正直私は文章作成能力がとんでもなく低く、まだ学習開始と言う部分で至らない点もあります
もし間違えていたらお知らせください以上
- 投稿日:2021-01-09T21:43:25+09:00
ECCUBE4で多言語化プラグインを作ってみた
こんにちは!
kamotetuと申します
久しぶりの投稿になります
今回はタイトルの通りECCUBE4で多言語化プラグインを作ってみたということで紹介したいと思います。
↓リポジトリ
CrossBorder1eccubeの対応バージョンは4.0.4 ~ 4.0.5で、4.0.3では動かないことを確認しています
ということでgithubに公開しましたのでよかったら試してみてください!
(試作品ですので完全自己責任のもと利用してください!)画像は商品登録ですが、他にもタグやカテゴリなどもできます(出来なかったらすいません!)
正直プラグイン開発の練習ということで去年の秋ごろまで作ってたものなのですが、githubのreadmeにも書いてある通り危ない箇所がたくさんあったので途中で開発を中止したものになります
なんで今頃公開したかというと、eccubeのQ&Aサイトに多言語化にする方法の質問があったのでコードを含め紹介しようと思い記事にしました
それで、コードの説明もしたいところですが、ファイルの数も多いので主要な処理をしているアクションだけご紹介します
ヘッダーの言語選択で多言語にしている処理
CrossBorder1/Event/EventListener.phppublic function onKernelRequest(GetResponseEvent $event) { ... }多言語保存処理
CrossBorder1/Event/SaveContentEventSubscriber.phppublic function postFlush(PostFlushEventArgs $args) { ... }是非githubからダウンロードして確認してみてください
作りは非常に力技の部分が多いですが、多言語化カスタマイズしようと思っている方の参考になれば幸いです!
- 投稿日:2021-01-09T20:53:23+09:00
【PHP】API実行ツールを作ってみよう(その1)
はじめに
PHPでツール作成の三回目です。
今回はPHPを使ってAPIツールを作成していきたいと思います。
クライアント側(データ送信)とサーバ側(データ受信)があるので、それぞれ作成していきます。クライアント
クライアント側はChrome拡張機能のTalend API Tester を使用します。
1.Talend API Tester へアクセスし、右上の「Chromeに追加」のボタンを押下しインストール
2.Chromeの拡張機能にTalend API Testerが追加されているのでアイコンをクリック
3.このような画面が表示されれば起動成功です
本来であればこの後、このツールを使ってサーバへの送信URLやパラメータを設定していくのですが、
まだサーバ側が出来ていないので一旦クライアントはここまでとします。サーバ
続いてサーバ側を作成していきます。
こちらがPHPになります。1.「c:¥xampp¥htdocs」フォルダに「api」フォルダを作成します
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」ボタンを押下
2.プロジェクト作成ダイアログが開くので、Name欄に「API」、その下のチェックボックスを外し、「Create」ボタンを押下
3.MY DRIVEに「API」が出来るので、右側の「⋮」を押し、「Add a request」ボタンを押下
4.リクエストパラメータをセット
①「GET」を選択します
②「https://localhost/api/server.php」と入力します
③「QUERY PARAMETERS」を押下し、下の入力欄に「name」「テスト」と入力します
④URLの末尾に「?name=テスト」が追加されることを確認します
⑤「Send」ボタンを押下します
クライアント動作確認
・「Send」ボタン押下後、画面下のResponseに「200 OK」が表示されていて、
右下の「BODY」に「Success」と表示されていれば成功しています
サーバ動作確認
1.実行日時のファイル名でテキストファイルが作成されていることを確認
2.テキストファイルを開き、「テスト」の文字列が記載されていることを確認
最後に
このようなAPI実行は実際の業務でも割と使うことがあるかと思います。
次回は、クライアント部分をPHPを使って作成したいと思います。
- 投稿日:2021-01-09T13:40:18+09:00
ローカル環境で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を色々いじれますよ!
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となっているもの)を除いたインストールプロファイルが選択可能と見なされます。
- 投稿日:2021-01-09T10:25:03+09:00
Laravel Eloquentで作る「いいね」数ランキングリスト
はじめに
メディア系サイトを構築している際、ユーザーや投稿をランキング形式で取得したい場合があるかと思います。
ランキングの基準を「いいね」数にしている場合投稿
といいね
を別テーブルにし、リレーションを設定するのが一般的だと思います。
リレーション先のいいね数をカウントしてソートします。何が問題か?
Laravel Eloquent
を用いてソートを実装する場合orderBy
を使用します。ProductController.phppublic function list() { $products = Product::with('likes')->orderBy(Product::CREATED_AT, 'desc')->paginate(); return $products; }
orderBy
はテーブルのカラムを利用して(第一引数)降順・昇順(第二引数)を決定します。
そのためcount()を用いて「いいね」数を取得してもそれはカラムではないため、orderByできません。実装
withcount()
を使用します。引数に取得したいリレーションテーブル名を入れると'○○_count'というデータをカラム扱いとして取得できます。この値はカラム扱いなため、きちんとorderBy
できます。ProductController.phppublic function list() { $products = Product::withCount('likes')->orderBy('likes_count', 'desc')->paginate(); return $products; }
- 投稿日:2021-01-09T09:49:06+09:00
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この違いを理解して使い分けないと、エラーや予期しない動作の原因となります。
- 投稿日:2021-01-09T09:00:01+09:00
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--;
- 投稿日:2021-01-09T01:20:08+09:00
PHP artisanコマンドを適当に
Laravel サーバが起動
$php artisan serve --host=$IP --port=$PORTキャッシュクリアコマンド
$php artisan cache:clearコマンドのリストを表示
$php artisan listtinker起動
$php artisan tinkerLaravelのバージョン確認
$ php artisan --version$ php artisan -v
make
$php artisan make:作りたい種類 ファイル名 --オプション作成したマイグレーションを実行してテーブルを新規作成
$php artisan migrate1つ前のマイグレーション操作に戻します
$php artisan migrate:rollbackメンテナンスモードの実行
$php artisan downメンテナンスモード ⇒ 通常モード
$php artisan up
- 投稿日:2021-01-09T00:57:47+09:00
プロキシ 意味
プロキシ 高速なアクセスや安全な通信など確保するための中継サーバー
プロキシの仕組み
1.内部クライアントからリクエストを送る。2.プロキシサーバーが中継して目的にサイトにリクエストを出す。
3.プロキシサーバーがクライアントに返事を返す。
4.サイトが閲覧出来る。
- 投稿日:2021-01-09T00:50:23+09:00
PHP composer 意味
composer パッケージ依存管理ツール
沢山の処理・機能が入ったライブラリを使うことがありそれをまとめて管理している。パッケージ まとまったライブラリ