PHP関連のことを調べてみた2022年04月19日

PHP関連のことを調べてみた2022年04月19日

API(‘ω’)?

# [APIとは](#-APIとは)
調べるとだいたい「アプリケーションなんたらかんたら」の略で~と出てきますが、おそらく私レベルの初学者が知りたいのはそこじゃない。
正式名を知りたくて調べたのではない。
APIを使って何が出来るかイメージが付かない。

# [両想いってこと](#-両想いってこと)
|                                           
|:-:|
||

要するにサービスを使いたい側居て、そしてサービスを使って欲しい側が居て成り立っている。
ではどのようにしてそれが成立しているのか?

基本的にAPIは「リクエスト(要求)」と「レスポンス(応答)」で構成されます

元記事を表示

[Drupal]PHPUnitで基本のカーネルテスト

## カーネルテストとは
DrupalのPHPUnitのテストには主にユニットテスト、カーネルテスト、ファンクショナルテストというものがあります。

![スクリーンショット 2022-04-19 8.12.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253501/0427df25-8c3a-80db-5f27-e46e9772f380.png)

ユニットテストはDrupalのブートストラップ無し状態で行うテストです。一番高速ですがDrupalのサービスクラスなどを呼び出す際にいわゆる「モック」を作らなくてはいけないというデメリットがあります。またユニットテストでDBに接続するのは(頑張ればできるけど)非推奨とされています。

ファンクショナルテストはいわゆるブラウザテストで、新しくインストールされたDrupalに対して仮想ブラウザからリクエストを送る形でテストを行います。DrupalのコアとDBが使えたりユーザー目線のテストができるという反面実行速度が遅いというデメリットがあります。

カー

元記事を表示

Laravelでstorage配下の画像削除

# [環境](#-環境)
* Laravel5.8
* PHP7.4
# [何をするか?](#-何をするか?)

LaravelによるWEBサービスで画像登録などを行うことも多いと思います。
* ユーザーのプロフィール画像
* 投稿コンテンツのサムネイル画像
* 商品画像etc…

そしてそれらはWEBサービス上で削除される可能性もあります。
ユーザーが退会したり、商品画像の変更や削除ですね。
その際にプロジェクト内の実際の画像も削除しないとプロジェクト内がユーザーやコンテンツが増えるたびに肥大化します。

それを防ぐために実際の画像も削除していきましょう。

コントローラー内はシンプルにアイテムを一つ取得してそれの画像を消す処理です。
“`
php artisan storage:link
“`
既に上記コードででシンボリックを貼ってる前提です。

“`Controller.php
namespace App\Http\Controllers;
use App\I

元記事を表示

PHP7技術者認定初級試験に出る$_SERVER配列

__PHPの$\_SERVER配列をPHP7初級に出る値だけでまとめました__
※$_SERVER内のkey=>value多い!全部覚えてられない!

$_SERVER配列とは連想配列で、“サーバー変数“と呼ばれています
$_SERVER[‘key’]でvalueが出ます

では早速はじめてのPHP(オライリー本)で出現するサーバー変数を見て行きます
これに載ってないのは出ないハズ

# 1.$_SERVER[‘PHP_SELF’]
オライリー様曰く、
__「現在のリクエストURLのパス名を保持します」__
らしい
つまり
http://うんたら.com/あーでも/こーでも.php
というURLにアクセスする場合、
$_SERVER[‘PHP_SELF’]は
/あーでも/こーでも.phpになる
サイトによっては現在実行しているURLのパス名部分と書いてあったりする
パス名が欲しいなら$_SERVER[‘SCRIPT_NAME’]が推薦されているらしい※テストに出るかは不明

# 2.$_SERVER[‘REQUEST_METHOD’]
オライリー様が仰るには
__「Webブラウ

元記事を表示

4/18_オブジェクト指向

## オブジェクト指向の三大要素

カプセル化
データと機能をまとめ、必要なものを提供
継承
クラスからデータと機能を受け継ぐ
ポリモーフィズム
同じ命令でも異なる動きを持たせる

## アクセス修飾子
アクセス権を指定するもの
①private(自クラス内でのみアクセス可能)
②protected(自クラスか継承クラスからのみアクセス可能)
③public(どこからでもアクセス可能。これがdefault)

## コンストラクタ
インスタンス化した時(Newで呼び出された時)、必ず最初に起動させておきたい処理

## PHPにおける「$_GET」について
$_GETはHTTPGETメソッドで送信され、URLパラメータとして送られてきた値を取得する変数

## プレースホルダーとは
後から値を設定するときに使う。(SQLインジェクションを防ぐ)

元記事を表示

WordPressでLPを用意したいときのTips

CSS何もわからないマンです。

WordPressで会社のHP運営している方々はいっぱいいらっしゃると思いますが、だいたい困ることが、あとからページを追加しようとしたときに、header.php、footer.phpやcss、jsがぐちゃぐちゃになることが多いかなと思います。

いつかリファクタ、または作り直すとかすると思いますが、大体が急ぎーとか来週にはあげたいーとか自分の仕事が忙し〜だと思うので、なかなか手がつけられずスパゲティな感じになるんじゃないでしょうか。

僕もまだまだですが、最初からこういうの設計にしておけばよかったなってのがWordPressにはあるので、今回はLPを題にして自分のためにもメモしていこうと思います。

# 固定ページのtemplateを用意する

同じpage.phpを使いますと条件分岐地獄がまっていますので、できれば分離したいです。

WordPressには固定ページのテンプレートを用意することができるので、分けてあげましょう。

“`bash
$ cp page.php page-lp.php
“`

管理画面から、page-lp.phpを認識

元記事を表示

MySQLでデータを一括削除してidを1から振りなおす

# [やる事](#-やる事)
データベースのテーブル内の情報を有無を言わさず全削除。そしてidを1から振り直します。
外部キー制約付いてると一括削除できません。

“`
//一括削除
truncate table テーブル名;
“`

“`
//idを1から振りなおす
ALTER TABLE テーブル名 AUTO_INCREMENT =1;
“`
ていう感じです。

元記事を表示

LaravelとVue.jsで「いいね」機能を作る

# [開発環境](#-開発環境)
* Laravel5.8
* Vue.js 2系
# [完成イメージ](#-完成イメージ)
メルカリとかみたいにユーザーが投稿したアイテムがあり、その詳細画面で不特定多数のユーザーが
いいね出来る感じ。
# [Modelとマイグレーションを作る](#-Modelを作る)
“`
$ php artisan make:model Like -m
“`

マイグレーションは以下の通り。
“`migration.php
bigIncrements(‘id’);
//紐づくユーザーが削除(退会等)されたらいいねも削除
$ta

元記事を表示

PHP(Laravel) constructを使ったクラスについて解説

## 今回やること

今回は、constructを使ったクラスについて解説をしていく。

## STEP1

“`
name = $test2;
}
function show(){
echo $this->name;
}
}
“`

今回の場合は、testがインスタンス化されたら、__constructが発動して、$this(クラスthisのこと)の中にあるnameに、引数の値を入れるという処理。

そして、showで、nameの値を表示するといった処理が書かれている。

## STEP2

実際に表示をする作業に入る。

“`
$test4 = new test(“aaa”);
$test4->show();
?>
“`

test4で、クラスtestをインスタンスして、引数として、aaaを入れている。

そして、test4の中のshowを呼び出すといった構成にな

元記事を表示

Laravel「くっ。X-Serverのエントリポイントはpublic_htmlだと…」

Laravel「エントリポイント変えたろ」

“`php:app/Providers/AppServiceProvider.php
public function register()
{
// set the public path to this directory
$this->app->bind(‘path.public’, function() {
return base_path().’/public_html’;
});
}
“`

“`php:server.php
// require_once __DIR__.’/public/index.php’;
if ($uri !== ‘/’ && file_exists(__DIR__.’/public_html’.$uri)) {
return false;
}

require_once __DIR__.’/public_html/index.php’;
“`

“`php:webpack.mix.js
mix.setPublicPath(‘public_html/’)

元記事を表示

Composer でプライベートリポジトリを使っている時の GitHub Actions 設定方法

Composer でプライベートリポジトリを require している場合、GitHub Actions で普通に

“`yaml
– name: Install dependencies
run: composer install –prefer-dist –no-progress
“`

としていると認証エラーが発生します。(当然ですよね)

“`
Failed to clone the git@github.com:foo/bar.git repository,
try running in interactive mode so that you can enter your GitHub credentials
“`

これを解決するためには、プライベートリポジトリを利用するためのアクセストークンを渡してあげる必要があります。アクセストークンを Actions に書いてコミットするなんてことは絶対しちゃいけないので、secret を利用します。なので全体では次のような手順が必要です。

1. GitHub のアクセストークンを生成する
2. リポジトリの

元記事を表示

PHP(Laravel) クラスを扱おう

## 今回やること

今回は、自作クラスの作成から、運用までをわかりやすく解説していく。

## STEP1
まず、Classを作成して、引数と処理内容と戻り値を記入する。

“`
class test{
function test1($test2){
$test3 = $test2 * 2;
return $test3;
}
}
“`

今回の場合は、classであるtestの中に、test1という名前の関数を作り、引数を2倍の値にして戻り値として返すという内容の処理を持たせている。

## STEP2

classを実際に使う作業。

“`
$test4 = new test();

$test5 = $test4->test1(87);
echo $test5;
“`

test4の中に、classの内容をコピーして入れる(インスタンス)

そして、test5で、コピーしたtest4の中にある関数test1を起動して、引数として87を指定する。

結果として、2倍の値である174が値として返される。

元記事を表示

日付入力フォームのクリック範囲を拡大

# [完成形](#-2.完成形)
こんな感じでどこをクリックしてもカレンダーが展開されるようにします。
![ezgif.com-gif-maker (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920917/65d6f4a6-4d95-7316-fbcb-409c8a7036f2.gif)

何も考えずに下記の記述のみだと
“`index.html
jQueryでボタン連打防止!!

# [連打ダメ!絶対!](#-2.連打ダメ!絶対!)
何か情報を登録したり更新したりする時に、POSTした際に画面を読み込んでる時間があると思います。その際に登録ボタン等を連打すると何も対策してない状態だとご親切に連打した分だけDBに情報を登録してくれます。
それをフロント側で制御してあげましょう。

こんな感じでボタンがあるとします。
“`index.php

“`

そしたらこれだけでOK
“`app.js
$(‘.js-no-repeated’).on(‘click’,function(){
$(this).prop(“disabled”, true);
$(this).closest(‘form’).submit();
});
“`

これでボタン押せなくなるのはわかると思いますがポイントはその下
“`app.js
$(this).prop(“disabled”, true);

元記事を表示

jQueryで指定文字以上でボタンを非活性にする

# [何をするか](#-2.何をするか)
コンテンツを登録する際やプロフィールをDBに登録する際に、最大文字数を制限したい場合があります。
その際にバックエンドでバリデーションを行っても良いのですが、そもそもフロント側でsubmitできない様にしてあげた方が親切ですね。

まず下の様な簡単なフォームがあるとする。

“`index.php

@csrf

内容(255文字まで)

【備忘録】.phpから別の.phpにある変数を参照する

web開発初心者の備忘録です。
オリジナリティあふれるソースコード。
# ポイント
require関数を使って.phpを読み込むことで、記述されているグローバル?な変数を参照できる。

https://www.php.net/manual/ja/function.require.php
# ファイル構成
“`
IISでルートに設定しているフォルダ
 └ test
   ├ main.html
   ├ main.php
   ├ lib.php
   ├ info.php
   ├ main.js
   └ jquery-3.6.0.js
“`
# ソースコード
“`html:main.html



test