Slide 1

Slide 1 text

֎෦ҕୗͷཱ৔͔Β ൒͹ڧҾʹLaravelΛಋೖͨ͠࿩ LaraLab vol.1 2017/09/13 @shibuya 21cafe

Slide 2

Slide 2 text

Yudai Shinnoki @konoki_nannoki Freelance Engineer ͓΋ͳҊ࣮݅੷ PHPɺΠϯϑϥɺAndroid(Java) ษڧத SwiftɺReact Native ࠷ۙͷڵຯ Architecting on AWS 21ສԁ+੫͸ϋʔυϧ͕ߴ͍…

Slide 3

Slide 3 text

Brush-UPֶͼ •  LaravelΛ࢖ͬͨγεςϜΛ9/4ʹެ։͠·ͨ͠ https://www.brush-up.jp

Slide 4

Slide 4 text

ൿ఻ͷλϨ •  PHP 5.3 •  MySQL 5.1 •  Smarty

Slide 5

Slide 5 text

ൿ఻ͷλϨ •  PHP 5.3 •  MySQL 5.1 •  Smarty •  Shift-JISͱ૬ੑ͕ѱ͘ɺ{literal}Ͱ ғΘͳ͍ͱΤϥʔʹͳͬͨΓ͢Δ จࣈίʔυ͸Shift-JIS

Slide 6

Slide 6 text

ൿ఻ͷλϨ •  PHP 5.3 •  MySQL 5.1 •  Smarty •  Shift-JISͱ૬ੑ͕ѱ͘ɺ{literal}Ͱ ғΘͳ͍ͱΤϥʔʹͳͬͨΓ͢Δ •  όʔδϣϯ؅ཧ͞Ε͍ͯͳ͍ •  ͱ͜ΖͲ͜Ζʹྺ࢙Λײ͡ΒΕΔ •  CentOSͳͷʹ/user/local/apache2ͷ ઈରύε͕ϋʔυίʔυ͞ΕͯͨΓ͢Δ จࣈίʔυ͸Shift-JIS

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

γεςϜߏ੒ •  આಘͷ͠қ͔͞ΒɺLaravel 5.1 LTS Λબ୒ •  PHP 7.0 (7.1͡Όͳ͍ཧ༝͸ಛʹແ͍) •  Laravel 5.5 LTS ͕ 8/30 ʹϦϦʔε •  طଘγεςϜ͔Βஈ֊తʹҠߦ •  nginxͰURL͝ͱʹϦόʔεϓϩΩγ •  DBεΩʔϚ͕มΘΔͱطଘγεςϜͷमਖ਼ ΋ඞཁʹͳΔͷͰɺطଘγεςϜ͕ඞཁͳ͘ ͳ͔ͬͯΒDBΛݟ௚͢

Slide 9

Slide 9 text

࣮૷্ͷ՝୊ ① طଘDBͱͷ࿈ܞ

Slide 10

Slide 10 text

EloquentϞσϧͷ࣮૷ •  protected $table •  ໋໊نଇʹԊ͍ͬͯͳ͍৔߹ඞਢ •  protected $primaryKey •  Model::whereΛ࢖͏͚ͩͩͬͨΒ࣮͸ෆཁ •  relationを考えると設定しておいたほうが無難 •  const CREATED_AT, const UPDATED_AT •  ͲͪΒ΋ෆཁͳΒ public $timestamps = false; •  updateͷΈෆཁͳΒ public function setUpdatedAt($value) { }

Slide 11

Slide 11 text

ෳ਺छྨͷEloquentϞσϧͰϧʔϓ͍ͨ͠ •  Illuminate\Database\Eloquent\Collectionʹ ෳ਺classΛಥͬࠐΜͰ΋໰୊ͳ͍ •  EloquentϞσϧʹڞ௨ͷΞΫηαʔΛ࣮૷͢Δ •  has-Oneͳؔ܎͕ଟஈʹͳ͍ͬͯΔ৔߹ ҰஈʹͳΔΑ͏ʹΞΫηαʔͰΤΠϦΞε ͓ͯ͘͠ͱUndefined ErrorΛҙࣝ͠ͳ͍ͰࡁΉ

Slide 12

Slide 12 text

࣮૷্ͷ՝୊ ② Shift-JISରԠ

Slide 13

Slide 13 text

/config/database.php ͷจࣈίʔυઃఆ •  DBͷจࣈίʔυΛແࢹͯ͠ ’charset’ => ’utf8’ •  ͨͿΜ SET NAMES utf8 ͱಉ͡ޮՌ •  varcharͰ͸͏·͍͕͘͘blobͰจࣈԽ͚͢Δ •  ૉ௚ʹ’charset’ => ’sjis’ •  ιʔε͸UTF8ʹ͍ͨ͠ͷͰɺ EloquentϞσϧ͔ΒAttributeऔಘ࣌ʹม׵ •  Illuminate\Database\Eloquent\ModelΛ ܧঝͨ͠ abstract class SjisBaseModel Λ࣮૷ͯ͠ڞ௨ॲཧΛॻ͘ํ਑

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

public function getAttribute($key) ͷ override •  ͢΂ͯͷΞΫηαʔʹڞ௨ͳॲཧΛॻ͚Δ •  ݸผʹΞΫηαʔ͕͋Δ৔߹ͦͷޙʹݺ͹ΕΔ •  getAttribute ʹSJIS->UTF8ม׵Λॻ͘৔߹ getFooAttribute ͸SJISͰฦ͢ඞཁ͕͋Δ(ʂ)

Slide 16

Slide 16 text

public function getAttribute($key) ͷ override •  ͢΂ͯͷΞΫηαʔʹڞ௨ͳॲཧΛॻ͚Δ •  ݸผʹΞΫηαʔ͕͋Δ৔߹ͦͷޙʹݺ͹ΕΔ •  getAttribute ʹSJIS->UTF8ม׵Λॻ͘৔߹ getFooAttribute ͸SJISͰฦ͢ඞཁ͕͋Δ(ʂ) •  protected function getAttributeFromArray Λ override ͢Δ͜ͱͰDB͔Βऔಘͨ͠σʔλ ͷΈΛม׵Ͱ͖ͨ

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

ݸਓతʹ ͍͍ͱײͨ͡ͱ͜Ζ

Slide 19

Slide 19 text

BladeʹૉͷPHPίʔυ͕ॻ͚Δ •  ࠔͬͨΒͱΓ͋͑ͣ Ͱॻ͚͹͍͍ •  ίϯϙʔωϯτͬΆ͘@include Ͱ͖Δ

Slide 20

Slide 20 text

BladeʹૉͷPHPίʔυ͕ॻ͚Δ •  ࠔͬͨΒͱΓ͋͑ͣ Ͱॻ͚͹͍͍ •  ίϯϙʔωϯτͬΆ͘@include Ͱ͖Δ ͪΐͬͱෳࡶͳॲཧ ͉ ςϯϓϨʔτ

Slide 21

Slide 21 text

ιʔείʔυ͕௥͍΍͍͢ʢؾ͕͢Δʣ •  PHPStorm Ͱߋʹշద •  ʮLaravelɹPHPStormʯͱ͔Ͱݕࡧ͢Δͱ ηοτΞοϓͷ৘ใ͕Ͱͯ͘Δ •  ܕએݴΛ࢖͏ͱΰϦΰϦͱิ׬ͯ͘͠ΕΔ •  ઌड़ͷgetAttributeFromArray ΋ ͜ͷ͓ӄͰؾ͚ͮͨ

Slide 22

Slide 22 text

·ͱΊ •  ࣮૷্ͷ੍໿͕ଟ͍৔߹Ͱ΋ɺ LaravelͳΒॊೈʹରԠͰ͖Δͱײͨ͡ •  DBͷݟ௚͠΋͍ͩͿָʹͳΓͦ͏ •  Laravel 5.5 LTSҠߦʹ͍ͭͯͷ৘ใ͕ ͋ͬͨΒڭ͍͑ͯͩ͘͞