- 1. 文字列の長い順番に揃えたい
- 2. AdMobの売上データをデータベース連携する
- 3. Lightningにメニュー項目を追加(function.php/header.php)
- 4. pChart を PHP7 対応させる方法
- 5. 空白検知(ゼロ幅スペースなどに対応した完全版) in JS/PHP
- 6. phpにおけるhtml文のプルダウンメニューでループを回す方法
- 7. CakePHP デバッグの方法一覧
- 8. CakePHP データ取得の方法(get・find)
- 9. 【PHP】データの暗号化・復号化
- 10. Laravelのサービスコンテナのextendは抽象と実装両方とも反応する
- 11. Laravelでデータベースのcreated_atから日付だけ取り出す
- 12. 【PHP】アスタリスクで様々な三角形を作る
- 13. 【PHP】Laravel bladeビューファイルの記述の注意点
- 14. 【PHP】Laravelのbladeテンプレートを理解する。
- 15. 【PHP】Laravel @componentや@includeの第2引数。連想配列でデータを渡す方法。
- 16. Laravel 初期設定
- 17. WordPressのwp_head()の余計なmetaを削除する
- 18. 【Psalm/phar】Notice: Uninitialized string offset: 0 in … で Cannot locate エラー
- 19. CakePHPのget/set/withなどのクラス別まとめ
- 20. [PHP] Twitter風な簡単な掲示板を作る(データベース設計, 準備)
文字列の長い順番に揃えたい
たとえばtwitterのツイートの中のユーザIDをリンクにしたいとき
@hoge, @hogehoge があると、@hogeを置換するときに@hogehogeのほうも置換されちゃう
これを防ぐには、ユーザIDを抽出した後に文字数の大きい順番にソートする必要があるこのロジックは文字列置換・文字列探索の業務でちょくちょく必要になる
“`PHP
$ary = [‘hogehoge’, ‘hoge’, ‘aiueo’];usort($ary, ‘lrsort’);
function lrsort ($a, $b) {
$la = strlen($a);
$lb = strlen($b);
if ($la < $lb) return 1; if ($la > $lb) return -1;
return 0;
}
“`
AdMobの売上データをデータベース連携する
こんにちは。Link-U入社2年目のたくやんです。
今年1年何をやったかなぁと思い返すと、そういやAdMobの売上データを取得するのにそこそこ苦労したなぁと思い、
備忘録も兼ねて書き残したいと思います。##AdMobとは
>AdMob – Wikipedia
>https://en.wikipedia.org/wiki/AdMobGoogleが提供するアプリ内広告です。審査が厳し目とかいう噂を聞いたり聞かなかったり。
##前準備
#### credentials.jsonの取得
https://console.developers.google.com/apis/credentials
から認証情報を登録すると、credentials_jsonファイルをダウンロードすることができる。#### oauth2のインストール
“`
curl https://storage.googleapis.com/oauth2l/latest/linux_amd64.tgz | tar zx -C /usr/local/bin –strip-components 1
cp c
Lightningにメニュー項目を追加(function.php/header.php)
#wordpressの無料テーマLightining
管理画面で設定できるメニュー箇所を追加する方法をご紹介完成系は
有料版にあるヘッダー右上のヘッダーサブメニューを無料版Lightningに追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820683/01e90c14-9686-813c-7e59-a4bf44f01b42.png)ダッシュボードにも、ちゃんとメニューバーの設定項目が出力されます!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820683/1e3ebeab-3ecf-ef92-4da7-011b25163c1f.png)#functino.phpに追記
以下を追記
・header_sub : 任意の文字列
・ヘッダーサブメニュー : 外観>メニューで表示される任意の文字列“`php
register_nav_menus(array(
‘he
pChart を PHP7 対応させる方法
#概略
pChart を、PHP7 で動かすとエラーが出て正常に動いてくれません。これの暫定的な対応策です。とりあえず動いてくれればいいや、という状況向け。#詳細
こんな感じのエラーが出ます。
“`php
Fatal error: Uncaught Error: Cannot use string offset as an array “pchart”
“`エラーの原因としては、変数を後から配列扱いすると PHP7 でエラーが出るようになったのが原因なので、pChart.class と pData.class を何箇所か修正すると正常に動くようになります。
“`php
$this->Data = “”;
$this->DataDescription = “”;
“`↓ 以下のように初期化宣言を直す。
“`php
$this->Data = array();
$this->DataDescription = array();
“`以上。
空白検知(ゼロ幅スペースなどに対応した完全版) in JS/PHP
空白や改行だけの文字列の検知には正規表現の`\S`で検知したり、`String.prototype.trim()`([MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/trim))を使用することがありますが、これだとゼロ幅スペース([Wikipedia](https://ja.wikipedia.org/wiki/ゼロ幅スペース))などの一部の空白文字は通過してしまいます。そこで、より多くの文字を検知するコードを書いたので紹介します。
## JavaScriptの場合
“`javascript
const word = “判別する文字列”;
const reg = /^[\u0009-\u000d\u001c-\u0020\u11a3-\u11a7\u1680\u180e\u2000-\u200f\u202f\u205f\u2060\u3000\u3164\ufeff\u034f\u2028\u2029\u202a-\u202e\u2061-\u2063
phpにおけるhtml文のプルダウンメニューでループを回す方法
#ソースコード
簡潔な書き方
“`
CakePHP デバッグの方法一覧
CakePHPを扱うにあたって色々な手段でデバッグを行ったのでまとめました。
PHP基本のデバッグ
–**degug**
基本中の基本、引数に変数やマジックメソッドを使う等使い方は無限。**exit**
処理を抜ける。
画面がリダイレクトする処理等のデバッグをする際に、debug()と組み合わせて使う事が多い。**stacktrace**
スタックトレースの出力、下記のようにすると見やすい。“`
echo ‘'; stackTrace(); echo '‘;
“`ORM関連
–
参考:
https://book.cakephp.org/3/ja/orm/retrieving-data-and-resultsets.html#table-find-list>debug($query) SQL とバインドパラメーターが表示されます。結果は表示されません。
>sql($query) DebugKit がインストールされている場合に限り、最後に描画された SQL を表示します。
>debug($query->all()) ResultS
CakePHP データ取得の方法(get・find)
CakePHPのデータ取得の方法についてまとめました。
そもそもTable/Entityとは
–
こちらが参考になりました。
https://qiita.com/tatsuo-iriyama/items/87097069013ac9df1ed9**テーブル**
データのコレクションにアクセスして、レコードの追加・更新・削除やリレーションの定義のためのオブジェクト**エンティティ**
個々のレコードを指す、レコードの振る舞いや機能を定義する
カラムに対しても処理可能上記を踏まえてCakePHPのデータ取得とは
–
エンティティを検索したりロードしたりする事を指している。
(データ取得の手段として挙げるメソッドでコレクションとエンティティを返している)メソッド一覧
–**get**
単一のエンティティーを取得する
データが見つからなければ404エラーを返す
この中でカスタムファインダーを使用することも可能“`
$article = $articles->get($id, [
‘finder’ => ‘translations’,
]);
“`**f
【PHP】データの暗号化・復号化
PHPで動作するデータの暗号化・復号化のメモです。
通信時やDBのアクセス時などで使用します。# 動作環境
PHP 7.3.11# プロトコル
AES-256-CBCを使用します。#暗号化
“`phpconst AES_KEY = ‘tekitou_key’;
const AES_IV= ‘tekitou_iv’;/**
* 暗号化
* @param string $data
* @return string
*/
function encrypt($data)
{
return $data === null ? null :
openssl_encrypt($data, ‘AES-256-CBC’, AES_KEY, 0, AES_IV);
}
“`#復号化
“`phpconst AES_KEY = ‘tekitou_key’;
const AES_IV= ‘tekitou_iv’;/**
Laravelのサービスコンテナのextendは抽象と実装両方とも反応する
[ReadDouble](https://readouble.com/laravel/7.x/ja/container.html)のサービスコンテナの章に、結合の拡張と書いてあるのが目に入り、実装を拡張するのかインターフェースをデコレートできるのかどっちだろうと気になったので調べてみたら両方反応しました。色々使えそう。
# コード
“`PHP:Foo.php
interface Foo
{
/**
* 関数の説明
*/
public function getString(): string;
}
“`
“`PHP:FooImpl.php
/**
* クラスの説明
*/
class FooImpl implements Foo
{
private $bar = ‘default’;/**
* 関数の説明
*/
public function setString(string $new): void
{
$this->bar = $new;
}/**
Laravelでデータベースのcreated_atから日付だけ取り出す
#Laravelでデータベースのcreated_atから日付だけ取り出す
##背景
“`created_at“` を使用し、いつから利用しているのかを表示したい。しかし、“`created_at“` をそのまま使用すると日付だけでなく時間まで表示される。日付だけ表示したい。##対処方法
Conposerで公開されているパッケージの中に存在するライブラリである**Carbon**を使用。
作成した“`controller“`ファイルを編集する。
まずは上の方に“`use Carbon¥Carbon;“`を記述する。
次にfunction中に以下のように記述する。“`
$date = Carbon::createFromFormat(‘Y-m-d H:i:s’, $user->created_at)->format(‘Y-m-d’);
“`“`$user“` はそれぞれ使用したいデータベースのテーブル名などになるよ。
ちなみに**Carbon**については下記を参照するとわかりやすいかも。
[【Laravel】Carbonを初めて使ってみた](htt
【PHP】アスタリスクで様々な三角形を作る
“`
アスタリスク(*)で以下の三角形を作成
*
**
***
****
*****
“`“`PHP
“`“`
*****
****
***
**
*
“`“`PHP
“`“`
*****
****
***
**
*
“`“`PHP
【PHP】Laravel bladeビューファイルの記述の注意点
個人メモです。
Laravelでbladeビューファイルの記述の注意点について。##注意点
– PHPの処理は全て冒頭に`@`が必要
– PHP処理は1行ずつ(改行は使えない)
– ディレクティブがない行はHTMLとみなされる。
– PHPの処理のみを改行ありで記述する場合は`@php`を使う
– PHP処理の終わりは`@end処理の名前`を記述##bladeビューとは?
拡張子`.blade.php`のファイル。
HTMLをそのまま記述することができる。冒頭に@をつけることでphpの処理も併せて記述できる。“`php:xxx.blade.php
@if(条件式)true
@endif
“`
コンパイル時に@があればPHPと見なす。
##PHPの処理は全て冒頭に`@`が必要
if文の処理を使う場合は、`@if`と`@endif`だけではなく、`@else`など、PHPの行の冒頭には全て@が必要。“`php:OK
@if(条件式)true
【PHP】Laravelのbladeテンプレートを理解する。
個人用メモです。
以下のコードの各行が何をしているのかを理解する。“`php:table.blade.php
@if ($table->getColgroup())
@if ($table->getColgroup())
@foreach ($table->getColgroup()->getCols() as $col)【PHP】Laravel @componentや@includeの第2引数。連想配列でデータを渡す方法。 PHPのコードを確認していて以下のようなコードの処理内容の確認。
“`php:
@include(‘mrgrpcv::items.items’, [‘items’ => $items])
“`通常`@include`はbladeビュー(.blade.php)内で指定したビューを読み込むために使用される。
`@include(‘ファイル名’)`
##名前空間
`@include(‘mrgrpcv::items.items)`のように、ここではファイル名の指定に**名前空間**が用いられている。名前空間は`ServiceProviders.php`の`boot`関数内で設定している。
“`php:名前空間の設定
public function boot()
{
$this->loadViewsFrom(__DIR__.’/../../views’, ‘mrgrpcv’);
$this->publishes([
__DIR__.’/../../views’ => resource_path(Laravel 初期設定
[Laravel Advent Calendar 2020 – Qiita](https://qiita.com/advent-calendar/2020/laravel) の 24目 の記事です。
昨日は @Lob さんの[Laravel on GAE Standard 環境構築の手引き](https://qiita.com/Lob/items/f11fbb852d179d83523c)の記事でした!
明日は @mpyw さんの記事です!## 概要
Laravelプロジェクトをインストール直後にやった方が良さそうな初期設定をご紹介します。
## 環境
例として、以前Laravelのローカル環境を作ったものをベースにお話しします。
– PHP: 7.4
– Laravel: 8.x
– MySQL: 8.0“`shell-session
$ git clone git@github.com:ucan-lab/docker-laravel.git
$ cd docker-laravel
$ make create-project
“`– [最強のLaravel開発
WordPressのwp_head()の余計なmetaを削除する
ワードプレスのテーマtwentytwentyoneを基盤に、wp_head() 挿入時に自動生成される余計なmeta情報を削除する実装を行ったので、備忘録的にこの記事を残す。
# 環境情報
PHP:version 7.3.12
WordPress:version 5.5.3
WPテーマ:twentytwentyone# 作業
“`functions.php
// WPのバージョンを削除
remove_action( ‘wp_head’, ‘wp_generator’ );remove_action( ‘wp_head’, ‘rsd_link’ );
remove_action( ‘wp_head’, ‘wlwmanifest_link’ );
remove_action( ‘wp_head’, ‘index_rel_link’ );
remove_action( ‘wp_head’, ‘parent_post_rel_link’, 10, 0 );
remove_action( ‘wp_head’, ‘start_post_rel_link’, 10, 0 );
【Psalm/phar】Notice: Uninitialized string offset: 0 in … で Cannot locate エラー
# `Psalm` で `Cannot locate` エラー
> `composer require psalm/phar` でインストールした `phar` 版 `psalm` を実行すると、`Notice: Uninitialized string offset: 0 … command_functions.php …` と `Cannot locate` エラーが出るようになりました。
以前までは動いていたと思ったのですが、気付いたらエラーが出ていました。特に [Psalm の issues](https://github.com/vimeo/psalm/issues?q=is%3Aissue+Cannot+locate) にも上がっておらず、ググりまくっても解決策が見つからなかったので、自分のググラビリティ/備忘録として。
## TL; DR
> `psalm` のコマンド引数で、空のオプションを渡していませんか。
“`shell-session:空の引数を渡している
$ use_alter=”
$ ./vendor/bin/psalm \
–coCakePHPのget/set/withなどのクラス別まとめ
CakePHP初学者がコーディングの時にget/set/withの使い方で迷ったのでクラス別にまとめました。
バージョン:
PHP7.4
CakePHP3.9リクエストクラス
–
参考:
https://book.cakephp.org/3/ja/controllers/request-response.html###getParam()
ルーティングパラメーターなどを取得する“`
$controllerName = $this->request->getParam(‘controller’);
“`###getQuery()
クエリー文字列パラメーター
キーが存在しない場合nullが返る“`
// URL は /posts/index?page=1&sort=title
$page = $this->request->getQuery(‘page’);
“`###getQueryParams()
全てのクエリー文字列パラメーターにアクセスできる“`
$query = $this->request->getQueryParams();
“`[PHP] Twitter風な簡単な掲示板を作る(データベース設計, 準備)
現在PHPを学習中で、初めてTwitter風な簡単な掲示板を作りました。
まだまだ理解できていないところも多いのでここにアウトプットと忘却録として記述します!#データベース設計
まず、必要な機能について考えます!> ・文章文章を投稿することができる
・他人の投稿に返信することができる
・会員登録ができる
・写真をアップロードすることができる
・ログインできる
・ログアウトできる次に、これらの機能を実装するにあたってどのようなデータベースの項目が必要になるのかを考えます!
>* 文章を投稿する
* メッセージ
* 会員情報>* 他の人に投稿を返信できる機能
* メッセージ
* 会員情報
* 返信先のメッセージ>* 会員登録ができる
* ニックネーム
* メールアドレス>* 写真をアップロードすることができる
* 写真のパス>* ログインすることができる
* メールアドレス
* パスワード>* ログアウト
ログアウトに関しては、特に項目は必要ありません。
これで機能に必要な項目群がわかりました。##項目をテーブルに分ける
次関連する記事
OTHERカテゴリの最新記事
- 2024.09.19
JavaScript関連のことを調べてみた
- 2024.09.19
JAVA関連のことを調べてみた
- 2024.09.19
iOS関連のことを調べてみた
- 2024.09.19
Rails関連のことを調べてみた
- 2024.09.19
Lambda関連のことを調べてみた
- 2024.09.19
Python関連のことを調べてみた