PHP 関数
関数について〜
関数とは処理のこと Rubyでいうメソッドです。
難しくないよ。大変便利!!
関数に関して
関数は前に持ってくる。
前 後
RUbyのメソッドは後ろだったのでそこが違う!
例)
文字列に対する関数
strlen — ⽂字列の⻑さを得る
strtolower — ⽂字列を⼩⽂字にする strtoupperで大文字に
substr — ⽂字列の⼀部分を返す
explode — ⽂字列を⽂字列により分割する
implode — 配列要素を⽂字列により連結する
配列に関する関数
count — 変数に含まれるすべての要素を数える
array_reverse — 要素を逆順にした配列を返す
array_sum — 配列の中の値の合計を計算する
array_slice — 配列の⼀部を表示。配列自体はそのまま。要素を消したりせず一部表示
sort — 配列を並び替える。辞書順。アルファベット順である。
PHP学習2日目 反復 条件分岐 連想配列 等
PHP学習2日目になります!
学んだことブログにメモっていきま〜す
反復 while, for
ネストがある場合
外側の処理1回目
内側の処理が終わるまで繰り返す
外側の処理2回目
内側の処理が終わるまで繰り返す
・・・・
外側の処理最後
内側の処理が終わるまで
breakでforの処理を抜ける
この場合$i=5は行われない。
continueはその場合の処理を飛ばして続ける
$x == 1だった場合その処理をしない
$argv[1]
コマンドラインで入力した情報を返す
ターミナル
% php choice_tr3.php Andy secret 横に書く
ファイル名 $argv[1] $argv[2]];]
OK (出力結果)
$argv[0]はファイル名
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
論理演算子
==と===の違い
==は自動でデータ型を揃えてくれる。
(文字列と数値でも両方同じ型として扱う。)
===はデータ型を揃えない。
その為違う型同士であれば、falseになる。
また(int)このように書くことで整数型へと変換する
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
これはrubyのハッシュだよ。
連想配列の要素を削除するのはunset
配列ではarray_spliceを使っていたので注意。
for each 連想配列に入っているやつそれぞれ取り出す
キーとバリューを置いてあげて使う
おまけ
例えばenglishの要素を取り出し時は$score["english"]とする
これは[0]として取り出せない。配列のfor文は連想配列には使えない。添字ではないので。
=>あったら気をつけて
PHPマニュアル
説明のところ
()に引数 :の後ろに戻り値の型
phpマニュアルでは引数のことをパラメーターとして説明してる
戻り値のことは返り値としている。
PHP 変数 配列 他
PHP学習1日目今日学んだことメモ
変数には$ がつく
;忘れないでね
.は連結 文字列と数値も繋ぐことができる
論理値の場合
var_dump関数を使う
var_dumpは配列の詳細を見るにも使うよ
ターミナル
array(3) {
[0]=>
string(4) "Andy"
[1]=>
string(5) "Betty"
[2]=>
string(5) "Carol"
}
こう表示される。
var_dumpはこれからも色々出てきそう〜〜〜
改行 PHP_EOL;
ターミナル
Andy
Betty
おまけ コメントアウト
# を使えば改行しなくても横にコメントアウトを書くことができた。
丁度上のを見てもらえればわかる。
PHPの関数というのはRubyのメソッドみたいなものだと感じた!
PHP学習1日目
PHP学習1日目です。 メモがてらブログ書きます。
Udemyの基礎だけ学ぶPHPプログラミング講座を受講しています。
ターミナルコマンド
mkdir フォルダを作成する
mkdir helloword でhellowordというフォルダを作成できる。
historyコマンド
ターミナル内で入力したコマンドの履歴を見れる
cd .. これは使えると思う!
半角スペースいるので注意
子フォルダから親フォルダに移動できる(いつものcdと逆)
projects ←アプリフォルダ
例)
tutorial-app % cd ..
projects %
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
PHPプログラム
?>は省略しても構わない。省略することが多いみたい。
・echo命令を使うとターミナルにデータを出力できる。
・PHPプログラムはターミナル内でphpコマンドを使って実行できる
php.iniファイル
Macの場合、デフォルトでは作成されていないので、
以下のコマンドで作る
sudo cp /etc/php.ini.default /etc/php.ini
解説)cpはコピー /etc/php.ini.defaultを/etc/php.iniにコピーしている。
vsコード 右上の「開く」
コマンド+shift+gで
/etc/php.iniを探して開ける
Railsチュートリアル14章
テストコードはRspecで書いています。
フォローとフォロワーの関係ややこしいのでまとめる。
userモデル
has_many :following, through: :active_relationships, source: :followed
active_relationshipsのforeignキーはfollower_idで逆じゃないのか?ってなったがこれで正しい。
これは片方(逆の関係であるもの)を固定することによって片方の情報を持ってきている。
図を見た方がわかりやすい(14.7)
active
followed | folower
1 2
2 1
3 1
4 1
foreignキーでfollewer_idを指定する current_user(今回であれば1)によってフォローしているfollowedの情報を取ってくる。
has_many :followers, through: :passive_relationships, source: :follower
上と考え方一緒。逆の関係
図(14.9)
has_many active_relationshipsとhas_many following両方いる理由
has_many active_relationshipsではfollower_idとfollowed_idの2つの関係を取ってきている。
has_many followingでfollowed_idの情報だけ取ってきている。
そこからnameやemailなどuserの情報を持ってこれる。
これは多対多 中間テーブルの考え方 と一緒
---------------------------------------------------------------------------------------
Ajax 非同期通信
form_withをlocal trueからremote trueに変更する。
_follow.html.erb
_unfollow.html.erb
relationshipsコントローラー
javascriptが無効になっていた時の設定
config/application.rb
app/views/relationships/create.js.erb
escape_javascriptメソッド
JavaScriptファイル内にHTMLを挿入するときに実行結果をエスケープするために必要
app/views/relationships/destroy.js.erb
---------------------------------------------------------------------------------------
テストコード(Rspec)
relationshipモデル
system
follows_spec.rb
Railsチュートリアル13章
テストコードはRspecで書いています。
・複合キーインデックス
micropostのマイグレーションファイル
このようにして作成の逆順で取り出すよう設定している。
time_ago_in_wordsメソッド
何分前とかって出るようにする。例えば3分前、3時間前、3日前。
<%= render @feed_items %>
@feed_itemsはMicropostsのクラスを持っているため、micropostsのパーシャルを呼び出すことができた。_micropost.html.erbを呼び出してる
microposts作成失敗の場合に備えて
app/controllers/microposts_controller.rb
ページネートでエラーが出るので解決。
micropostsをcreateするcreateアクションがMicropostsコントローラーにあるので、Micropostsコントローラーでページネートしようとしている。
そこで、コントローラーとアクションを指定してあげることで解決する。
app/views/shared/_feed.html.erb
テストコード(Rspec)
factorybot
モデルテスト micropost
system spec micropost
Railsチュートリアル12章 パスワード再設定
Railsチュートリアル12章で大事だと思ったことをメモします。
テストコードはRspecで書いています。
パスワード再設定
ログインする際、パスワードを忘れてしまった場合にパスワード再設定をする。
userのedit,updateでパスワードを変えるのは違う。それはパスワードが分かっていててログインできてる状態。
今回はパスワードが分からなくて、ログインできない状態
全体像
ログインページからpassword_fogetをクリックしてパスワード再設定ページへ。
emailを入力すれば(new),createアクションでreset_token,reset_digestを生成。
reset_digestをカラムに入れる。またこのcreate アクションでメールを送る。
メール内に書かれたedit_pathをクリック。edit_pathに含まれるreset_tokenとuserカラムにあるreset_digestがauthenticated?で合致すればeditにいける。
edit_pathでpassword とpassword_confirmationを入力(edit)するとupdateアクションへ。passwordとpassword_confirmationをupdateしてあげる。
変更されたpasswordでログインできるようになる。
---------------------------------------------------------------------------------------------------------------
テストコード(Rspec)
systemとrequest specで書きました。 ほとんどrequest になっちゃった。
spec/system/users_spec.rb
system
同じくspec/system/users_spec.rb
request