新しいフォルダー

気になったことや勉強したことについて書いていきます

Laravelをちょっとだけ触ってみた感想

自分のメモ用として書き残す。

主にここ(はじめての Laravel 5.1 | ララ帳 | ページ 4)を参照している。

非常にわかりやすい。

Laravelのバージョンは5

 

【.envがみつかんねー!】

私はcentosのサーバーを立ててmountしてNetBeansを使用しているのだが

.envファイルの存在に気づかず、2時間くらい無駄にしました。

プロジェクトルートにあるので、vim等で修正しましょう。

【atrisanコマンド migrationオプション】

古い情報:php artisan migrate:make create_users_table

新しい情報:php artisan make:migration create_users_table

↑で紹介してるサイトをみてれば大丈夫だが、ぐぐってると古い情報があるので気をつけよう。

【テーブル名とモデル名】

テーブル名は複数形で命名しましたが、モデル名は単数形で命名するのが慣例となっています

 ややこしい。。。

こういう慣例って誰得なんだ?

 

【DBの作り方】

マイグレーションの作成→マイグレーション実行で作られる。

 

マイグレーションの作成

php artisan make:migration クラス名(スネーク) --create=テーブル名(スネーク)」

例:php artisan make:migration create_user_articles_table --create=user_articles

クラス名はキャメルに変換される。

マイグレーションを作るとID/insert_date/update_dateの3カラムが自動で設定されているので

追加編集する場合は/app/database/migrations/以下にあるファイルを編集すること。

 

 【INSERT時の注意点】

Eloquentを用いたInsertは2種類ある。

モデルのインスタンスをnewする方法とcreateメソッドを使う方法。

 

インスタンスをnewする方法

$article = new UserArticle();
$article->title = $title;
$article->body = $body;
$article->save(); 

 ・createメソッドを使う方法

$article = UserArticle::create(array('title' => $title, 'body' => $body));

 

両方同じ結果となるがcreateメソッドを使う場合は注意点がある。

マニュアル(Eloquent ORM 5.0.dev Laravel)にもあるがモデルに$fillable(更新して良いカラム)、$guarded(更新させないカラム)を設定する必要がある。

というか、設定しないとエラーになる。

 

・設定サンプル

class UserArticle extends Model
{
 protected $guarded = array();
 protected $fillable = array('title');
}

 

この記述だと、上記のcreateメソッドのサンプルの場合はtitleカラムに値が入り、bodyカラムには値が無い状態でINSERTが行われる。

 

とりあえず数日使ってみた感じ、新し物好きでなければLaravelを使う理由ないかなぁ

使いこなすと利点が見えてくるとは思うが、そこまでやる時間が無かったので今後のTODOタスクとして積んでおく。

 

vagrant+Laravelならこちら

Laravel homesteadを利用したLaravel 5 ローカル開発環境の構築 | hrendoh's memohrendoh's memo

BOOTSTRAP の導入方法

自分用メモ

 

参考

初めてのLaravel 5.1 : (15) Bootstrap3 の導入 | ララ帳

 

Bootstrapの導入方法はいくつか考えられます。

  1. Bootstrap CDNを使用する
  2. コンパイル済のBootstrap をダウンロードして、public ディレクトリ以下に配置する
  3. Bootstrapのソースをダウンロードして、resources/assets ディレクトリに配置し、Elixirを使ってコンパイルおよび public ディレクトリに配置する

3.が最も最適化できますが、手順が最も複雑で難しくなります。
この記事では最も手軽な、Bootstrap CDN を使用して進めます。
Elixirを使ったBootstrapの導入に関しては、以下の記事をご覧ください。

 

 

PHPの socket_create_listen と socket_create 関数について

現在PHPのソケットについて勉強中。

調べていてわかったことをメモっておく。間違っている可能性あり。

 

phpでソケット通信をする際の受け側で使用する場合は2パターンある。

 

1.socket_create_listenを使用する

2.socket_create, socket_bind, socket_listenを用いる

(socket_accept以降は共通なので省く)

 

簡単に説明すると

1.簡単にlisten状態にできるがすべてのインタフェースでlisten状態になる。

2.接続を受けれるインタフェースを指定できたりTCP/UDPIPV4/IPV6等の指定ができる

 

1のサンプルコード

$port = 9999;

$sock = socket_create_listen($port);
if(!$sock){
 echo 'ERROR_CREATE_LISTEN';

 exit;
}

$newSock = socket_accept($sock); 

2のサンプルコード

$port = 9999;

//ソケットの生成
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

//バインド
if(!socket_bind($sock, '192.168.56.101', $port)){
 echo 'ERROR_BIND';
 exit;
}
//待ち受け可能状態
if(!socket_listen($sock)){
 echo 'ERROR_LISTEN';
 exit;
}

$newSock = socket_accept($sock);

 

2のsocket_createでIPやらTCPを指定しsocket_bindでインタフェースを指定できる

 

1の実行結果(netstat)

tcp        0      0 0.0.0.0:9999                0.0.0.0:*                   LISTEN

2の実行結果(netstat)

tcp        0      0 192.168.56.101:9999         0.0.0.0:*                   LISTEN