Bladeのinjectという物を使えば独自関数を呼び出せる。#laravel

2023.02.01

Logging

おはようございます、週に一個は技術ネタを入れようかなと思っている中の人です。

今回はタイトル通りのお話になります。bladeで独自関数を使用したいなと思ったことはありませんか。そういう時に重宝するのはinjectだというお話になります。使い方は下記の方法で可能です。

@inject('代入される任意の変数名', 'namespaceを含むクラス名')
{{ $代入される任意の変数名->呼び出すメソッド名() }}

これを知ったのは次のサイトになります。因みにbladeとはLaravelで使用できるテンプレートエンジンになります。いうなれば昔、流行ったSmartyという物と同じ位置づけですね。

因みに、この記事はあまりSEOを意識していませんので検索にヒットしないかも知れませんので、是非ともシェアして頂けると有難いです😄。

余談なんですかもう一つ、bladeでHTMLを含む文字を変数に代入するとそのまま表示されてしまいますよね、それをHTMLコードとして認識させたい場合は下記のようにすることでHTMLコードとして認識されます。

{!! 任意の変数名 !!}

追伸、こちらの方が手っ取り早いような気がします.

{{ app()->call('App\Http\Controllers\TestController@test') }}
{{app()->call('App\Http\Controllers\QiitaController@aiueo',['a'=>'test'])}}

タグ

$代, App, AppHttpControllersQiitaController@aiueo&#39, AppHttpControllersTestController@test, blade, call, gt, html, inject, Laravel, namespace, SEO, Smarty, テンプレートエンジン, メソッド名, 余談, 変数, 変数名, 追伸, 関数,

アンフォローが多発しているのでアンフォローした人には自動でお礼コメントする。

2021.07.15

Logging

アンフォローが多発しているのでアンフォローした人には自動でお礼コメントするようにプログラミングコードを書いて五分間で処理を実行するようにcrontabに設定しました。ソースコードの一部を記載しますのでご自分の環境に合わしてご自由にお使いくださいませ。尚、TwitterOAuthライブラリを使用しておりますが、ライブラリの導入などに関しては割愛しております。

何故、こんなコードを書いたのか余談。フォロワーさんが外れるのはあまり嬉しいことではないですよね。離れていく人を食い止めようとは思いませんが、最後のお礼コメントぐらい言わせてくださいなという考えの元、今回のお礼コメントをするPHPのコードを書きました。相変わらずソースコードにコメントはありません、悪しからず?。

尚、一回目は一部コメントアウトして実行ください?

<?php
require_once("../vendor/autoload.php");

use Abraham\TwitterOAuth\TwitterOAuth;

if ($argv[0]) {
    require_once "./tw-config.php";
    $f_data = @file_get_contents("followers.dat");
    $f_data = $f_data?explode(PHP_EOL,$f_data):[];     

    date_default_timezone_set('Asia/Tokyo');
    $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
    $response = $connection->get("followers/ids", array(
        'screen_name' => 'zip358com',
        'count'=>1000
    ));

    $unFolloewers = array_diff($f_data,$response->ids);
    $data = @implode(PHP_EOL,$response->ids);
    file_put_contents("followers.dat",$data);

    if($unFolloewers){
        foreach($unFolloewers as $key=>$val){
            $response = $connection->get("users/show", array(
                'user_id' =>$val
            ));
            $text = "@".$response->screen_name. " さん 今までフォローありがとうございました(¯―¯?)。{フォロー解除されました? ([atmark]zip358comより自動投稿)}";
            print $text;
            $connection->post("statuses/update", array("status" => $text . " \n"));
        }
    }
}

タグ

aut, crontab, lt, once, php, quot, require, TwitterOAuth, vendor, アウト, アン, お使い, お礼, コード, こと, コメント, ご自分, ソース, フォロー, フォロワー, プログラミング, ライブラリ, , 一部, , , 今回, 何故, 余談, 使用, , 処理, 割愛, 多発, 実行, 導入, 最後, 環境, 自動, 記載, 設定,

phpのPDOでバインドする時、こうすれば楽。

2020.02.28

Logging

phpのPDOでバインドする時、こうすれば楽ですよね(・(ェ)・)という記述です。前の職場ではsqliでDB接続していたのですが、バインドして作られていたかは忘れてしまいました。ちなみに前の職場のPDOに改修するのは面倒くさいだろうなと感じます。何がめんどくさいかと言えば、今まで導入していたもの全てに対応するというのは、超面倒くさいと思います。

余談:
前の職場を何故辞めたかのお話します。突発的に辞めたと思う人もいるかもしれませんが、基本的に突発的辞めることはないです。突発的に辞めたかのように見えて前々から考えてきっかけを理由に辞めました。具体的な理由に関してはここでは書きません。突発的に辞めたかのように見せかけて計画的です(・(ェ)・)


ソースコードは下記になります。

<?php
ini_set("display_errors",1);
class mysql {
    static $dbh = Null;
    static $host = "localhost";
    static $id = "あいーでぃー";
    static $pass= "パスワード";
    static $dbname = "test";
    static $sql = array(
        "id"=>array("data"=>PDO::PARAM_INT,"val"=>""),
        "name"=>array("data"=>PDO::PARAM_STR,"val"=>"")
    );
    static function connect()
    {
        /* 接続状況をチェックします */
        try {
            static::$dbh = new PDO('mysql:host='.static::$host.';dbname='.static::$dbname.';', static::$id, static::$pass);
            static::$dbh->query('SET NAMES utf8');
          } catch (Exception $e) {
            echo "Failed: " . $e->getMessage();
          }
    }
    static function insert_query(){
        //プリペアドステートメント
        $stmt = static::$dbh->prepare("insert into test1 (id,Name) values(:id,:name);");
        //バインド
        foreach(static::$sql as $key=>&$val){
            $stmt->bindParam(":$key",$val["val"],$val["data"]);
        }
        $stmt->execute();
        $stmt = null;
     }
     static function update_query(){
        //プリペアドステートメント
        $stmt = static::$dbh->prepare("update test1 set Name= :name where id = :id;");
        //バインド
        foreach(static::$sql as $key=>&$val){
            $stmt->bindParam(":$key",$val["val"],$val["data"]);
        }
        $stmt->execute();
        $stmt = null;
     }
     static function select_query(){
        //プリペアドステートメント
        $stmt = static::$dbh->prepare("select * from test1 where id = :id;");
        //バインド
        foreach(static::$sql as $key=>&$val){
            if($key==="id")$stmt->bindParam(":$key",$val["val"],$val["data"]);
        }
        $stmt->execute();
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            printf ("%d (%s)<br>", $row["id"], $row["Name"]);
        }
        $stmt = null;
     }
    static function close(){
        static::$dbh = null;
    }
}
mysql::connect();
// for($i = 0 ;$i<=99;$i++){
//     mysql::$sql["id"]["val"] = $i;
//     mysql::$sql["name"]["val"] = "テスト$i";
//     mysql::insert_query();
// }
for($i = 0 ;$i<=99;$i++){
    mysql::$sql["id"]["val"] = $i;
    mysql::$sql["name"]["val"] = "テスト<font color='red'>$i</font>";
    mysql::update_query();
}
for($i = 0 ;$i<=99;$i++){
    mysql::$sql["id"]["val"] = $i;
    mysql::select_query();
}
mysql::close();

タグ

, class, db, dbh, display, errors, ini, lt, MYSQL, PDO, php, quot, set, sqli, static, お話, きっかけ, コード, ここ, こと, ソース, バインド, もの, 下記, , , 余談, 全て, , 前々, 対応, 導入, 接続, 改修, , 理由, 職場, 記述,

天気予報を取得するアレを使用してみた(Openweathermap_api)。

2020.02.19

Logging

ご自由にお使いください。尚、openweathermap.orgより
アカウントを作成後、APIKEYを取得しお使いください。
下記のソースコードをコピーしての可変等は可能です。

余談

天気予報の絵文字が合致していていないかもしれません。
また都道府県のIDもズレている場合、お好みで変更ください。
ZIPコードで情報を取得するとより正確な天気予報となるそうです。

下記のコードを実行するとこんな感じになります。

ソースコードはこんな感じになります。

<?php
class Openweathermap_api{
    public $url = "https://api.openweathermap.org/data/2.5/weather?id=";
    public $appid = "apikey";
    public $ken ="";
    public $response ="";
    public $icon = array(
        "01d"=>"?",
        "02d"=>"?",
        "03d"=>"?",
        "04d"=>"?",//?
        "09d"=>"?",
        "010d"=>"?",
        "011d"=>"?",
        "013d"=>"?",
        "050d"=>"?",
    );
    function __construct()
    {
        $this->ken = (object)(json_decode(@file_get_contents("ken.json"),true));
    }
    function api(){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $this->url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $this->response =  (object)json_decode(curl_exec($ch),true);
        curl_close($ch);
    }
}
$tenki = New Openweathermap_api();
$tenki->url = "https://api.openweathermap.org/data/2.5/weather?id=".$tenki->ken->kochi["id"]."&appid=".$tenki->appid;
$tenki->api();
print($tenki->icon[str_replace("n","d",$tenki->response->weather[0]["icon"])]);
var_dump($tenki->response);
{
    "hokkaido": {
        "id": "2130037",
        "kenmei": "北海道",
        "kenfurigana": "ほっかいどう"
    },
    "aomori": {
        "id": "2130656",
        "kenmei": "青森県",
        "kenfurigana": "あおもり"
    },
    "iwate": {
        "id": "2112518",
        "kenmei": "岩手県",
        "kenfurigana": "いわて"
    },
    "miyagi": {
        "id": "2111888",
        "kenmei": "宮城県",
        "kenfurigana": "みやぎ"
    },
    "akita": {
        "id": "2113124",
        "kenmei": "秋田県",
        "kenfurigana": "あきた"
    },
    "yamagata": {
        "id": "2110554",
        "kenmei": "山形県",
        "kenfurigana": "やまがた"
    },
    "fukushima": {
        "id": "2112923",
        "kenmei": "福島県",
        "kenfurigana": "ふくしま"
    },
    "ibaraki": {
        "id": "2112669",
        "kenmei": "茨城県",
        "kenfurigana": "いばらき"
    },
    "tochigi": {
        "id": "1850310",
        "kenmei": "栃木県",
        "kenfurigana": "とちぎ"
    },
    "gunma": {
        "id": "1863501",
        "kenmei": "群馬県",
        "kenfurigana": "ぐんま"
    },
    "saitama": {
        "id": "1853226",
        "kenmei": "埼玉県",
        "kenfurigana": "さいたま"
    },
    "chiba": {
        "id": "2113014",
        "kenmei": "千葉県",
        "kenfurigana": "ちば"
    },
    "tokyo": {
        "id": "1850144",
        "kenmei": "東京都",
        "kenfurigana": "とうきょう"
    },
    "kanagawa": {
        "id": "1860291",
        "kenmei": "神奈川県",
        "kenfurigana": "かながわ"
    },
    "niigata": {
        "id": "1855429",
        "kenmei": "新潟県",
        "kenfurigana": "にいがた"
    },
    "toyama": {
        "id": "1849872",
        "kenmei": "富山県",
        "kenfurigana": "とやま"
    },
    "ishikawa": {
        "id": "1861387",
        "kenmei": "石川県",
        "kenfurigana": "いしかわ"
    },
    "fukui": {
        "id": "1863983",
        "kenmei": "福井県",
        "kenfurigana": "ふくい"
    },
    "yamanashi": {
        "id": "1848649",
        "kenmei": "山梨県",
        "kenfurigana": "やまなし"
    },
    "nagano": {
        "id": "1856210",
        "kenmei": "長野県",
        "kenfurigana": "ながの"
    },
    "gifu": {
        "id": "1863640",
        "kenmei": "岐阜県",
        "kenfurigana": "ぎふ"
    },
    "shizuoka": {
        "id": "1851715",
        "kenmei": "静岡県",
        "kenfurigana": "しずおか"
    },
    "aichi": {
        "id": "1865694",
        "kenmei": "愛知県",
        "kenfurigana": "あいち"
    },
    "mie": {
        "id": "1857352",
        "kenmei": "三重県",
        "kenfurigana": "みえ"
    },
    "shiga": {
        "id": "1852553",
        "kenmei": "滋賀県",
        "kenfurigana": "しが"
    },
    "kyoto": {
        "id": "1857907",
        "kenmei": "京都府",
        "kenfurigana": "きょうと"
    },
    "osaka": {
        "id": "1853909",
        "kenmei": "大阪府",
        "kenfurigana": "おおさか"
    },
    "hyogo": {
        "id": "1862047",
        "kenmei": "兵庫県",
        "kenfurigana": "ひょうご"
    },
    "nara": {
        "id": "1855608",
        "kenmei": "奈良県",
        "kenfurigana": "なら"
    },
    "wakayama": {
        "id": "1848938",
        "kenmei": "和歌山県",
        "kenfurigana": "わかやま"
    },
    "tottori": {
        "id": "1849890",
        "kenmei": "鳥取県",
        "kenfurigana": "とっとり"
    },
    "shimane": {
        "id": "1852442",
        "kenmei": "島根県",
        "kenfurigana": "しまね"
    },
    "okayama": {
        "id": "1854381",
        "kenmei": "岡山県",
        "kenfurigana": "おかやま"
    },
    "hiroshima": {
        "id": "1862413",
        "kenmei": "広島県",
        "kenfurigana": "ひろしま"
    },
    "yamaguchi": {
        "id": "1848681",
        "kenmei": "山口県",
        "kenfurigana": "やまぐち"
    },
    "tokushima": {
        "id": "1850157",
        "kenmei": "徳島県",
        "kenfurigana": "とくしま"
    },
    "kagawa": {
        "id": "1860834",
        "kenmei": "香川県",
        "kenfurigana": "かがわ"
    },
    "ehime": {
        "id": "1864226",
        "kenmei": "愛媛県",
        "kenfurigana": "えひめ"
    },
    "kochi": {
        "id": "1859133",
        "kenmei": "高知県",
        "kenfurigana": "こうち"
    },
    "fukuoka": {
        "id": "1863958",
        "kenmei": "福岡県",
        "kenfurigana": "ふくおか"
    },
    "saga": {
        "id": "1853303",
        "kenmei": "佐賀県",
        "kenfurigana": "さが"
    },
    "nagasaki": {
        "id": "1856156",
        "kenmei": "長崎県",
        "kenfurigana": "ながさき"
    },
    "kumamoto": {
        "id": "1858419",
        "kenmei": "熊本県",
        "kenfurigana": "くまもと"
    },
    "oita": {
        "id": "1854484",
        "kenmei": "大分県",
        "kenfurigana": "おおいた"
    },
    "miyazaki": {
        "id": "1856710",
        "kenmei": "宮崎県",
        "kenfurigana": "みやざき"
    },
    "kagoshima": {
        "id": "1860825",
        "kenmei": "鹿児島県",
        "kenfurigana": "かごしま"
    },
    "okinawa": {
        "id": "1854345",
        "kenmei": "沖縄県",
        "kenfurigana": "おきなわ"
    }
}

タグ

2.5, API, APIKEY, appid, class, data, ID, lt, Openweathermap, org, php, pub, public, quot, url, weather, zip, アカウント, アレ, お好み, コード, コピー, ご自由, ズレ, ソース, 下記, 予報, 余談, 作成, 使用, 取得, 可能, 合致, 場合, 変更, 天気, 実行, 情報, 感じ, 正確, 絵文字, 都道府県,

ファイナルファンタジー15の体験版をしてみた_(:3」∠)_

2016.11.20

Logging


ファイナルファンタジー15の体験版をしてみた結果_(:3」∠)_
どうも自分には向いていない気がする、映像もやりこみ度も満載な
ゲーム何だけど、操作性のレベル上がってるです。
おそらく普通に人なら対応できるレベルなんだろうけど
どうしても自分には難しい、特にR1+△の操作が
鈍い・・・自分がやるとワンテンポ遅れてしまい
上手く出来ない。
普通の人だと大丈夫です、ただ超不器用なひとがFF15を
プレイすると、ボス戦などが「あたふた」なってしまう可能性が高いです。
そんな方はじっくりレベルを上げながらプレイすると良いだろうと。
ちなみに今回、フィールドがかなり凄くなっているし、
おそらくFF16はネットに繋がった状態でゲームが
より一層楽しめる仕様になるじゃないかなと
連想させるぐらいFF15は広大な世界観になってます。
(車は必須だわ(カスタマイズできます)。)
余談、昨日、PS4買って知ったことですが
ファイナルファンタジー15ってDL版があるのですね事です。
 

タグ

B01DN9WFB6, FF15, FF16, FINAL FANTASY XVオリジナルモデル, PS4, R1, アイテムコード同梱, ゲーム, ファイナルファンタジー1, ファイナルファンタジー15, フィールド, ワンテンポ, 世界観, 体験版, 余談, 初回生産特典, 操作性, 昨日, 正宗,

WordPress:仕事の現場でサッと使える!デザイン教科書。

2015.08.07

Logging


【Wordpress:仕事の現場でサッと使える!デザイン教科書】をぱらっと捲ってみて、どんな人向けなのか、すこし記載します。まず、この本、デザイン教科書と書いているわりにはザックリいえば、プログラマーよりの本です。どうすればWordpressでデザインを変更できるかを結構、がっつと焦点当てて書いてます。これまでWordpressの参考書は、どちらかと言えばプラグインで「何とかしましょうよ。」と言う解説本が多かったと思いますが、この本は違います。なので、HTMLやCSSは当然のごとく理解していて尚且つjavascriptのこともある程度、自分で作れるデザイナーさんにお勧めです。ちなみにプログラムが全然わからないという方はこの本を読むとWordpressがどのような仕組みで動いているのかとか、こういう事はできるけど、これは出来ないとかWEBプログラマーさんに発注するときに役立つ本だともいえます。
 
余談:この頃、ロゴなどのデザインできれば良いのになと感じます。デザイナーさんがいれば教わる機会や技を盗める機会があると思うのですが今のところ、そう言う機会がないのです・・。なので、本を購入して読んでいるのですけどPhotoshopに比べてillustratorのクラウド版はお高いので購入しようか悩んでいます。illustratorだけ入れるよりは、少し割高ですが、全部いれて月々4800円?支払うか方がお得なんですね。ただ、一年ぐらい前に全インストールしてた事があるのですが、使ったのはPhotoshopのみだったと言う自分です。いまはPhotoshopのみの支払いです。
 

タグ

illustrator, javascript, Photoshop, WEBプログラマー, WordPress, いまいち, がっつ, クラウド版, すこし, デザイナー, デザイン教科書, どちらか, プラグイン, プログラム, 仕組み, 余談, 参考書, 月々4800円, 機会, 焦点, 現場,

パスワードのチョメチョメ(***)が見えるソフト(Windows)はこれ(ノ´∀`*)

2015.01.13

Logging

パスワードのチョメチョメ(***)が見えるソフト(Windows)はこれです。
PasswordEyeというソフトです、結構、役に立ちます。ちなみにブラウザ上の
パスワードはIE以外は対応してないだとか。あくまでもWindowsソフトのチョメチョメ(***)が
見えるソフトです。ちなみにFirefoxの場合はブラウザ上のパスワード部分が
覗ける拡張アプリが存在したことを覚えています。
余談ですが、よく巷でパスワードが流出したとか言う記事を見かけると思いますが
絶対にDB上からパスワード流出しない会社があります。その中の一つに
グーグル社がはいってるとか・・・・。
パスワードに暗号化をかけるのはどの会社も行っている
事だと思いますが、暗号化したものは基本的に復号化する事が可能だと
思います。そうではないモノのもありますが・・・。どうもグーグル社の場合は
グーグル社のサーバー上でしか復号化できないような仕様になっているらしく
社外にパスワード情報が流出しても復号化は不可能らしいのです。
ちなみに世界的に有名なポータルサイトを列挙しときます。
日本ではYahooのシェア率が高いみたいですが、世界的にはグーグルが
トップです。

追記
たまには日本以外のポータルサイトを覗いてみるのも結構たのしいですよ。
ちなみにこれが国別Yahooのポータルサイトのアドレスです。
https://everything.yahoo.com//world/

タグ

db, Firefox, IE, PasswordEye, Windows, アプリ, グーグル, こと, これ, サーバー, ソフト, チョメチョメ, パスワード, ブラウザ, もの, 一つ, , , , 仕様, 以外, 会社, 余談, 可能, 場合, 存在, 対応, , , 復号, 拡張, 暗号化, 流出, , 記事, 部分,

カウントダウンを2度味わえる{ニューヨークタイムズスクウェアLIVE}。

2014.12.31

Logging


カウントダウンを2度味わえるということで、
ニューヨークタイムズスクウェアLIVE、URLを貼っときます。
こんな感じでLIVE映像でググると何度も世界のカウントダウンが味わえます・・・・
とか書いてますが、結構冷めているので冷めた目でみてます(´Д`)。
実際、こういうのは体験しないと全然楽しめないのですよね。
今年も紅白とかカウントダウンTVとか
見ながらネットしながら年越してます、たぶん。
それと去年みたいに年末年始の休みで体重増加しないように
食生活には気をつけないとイケナイとか思いつつ、
だら?っとした年末年始になりそうな予感。
あと、来年からまたウォーキングをはじめます(書かないと実行しないタイプです:余談)。
年末年始の予定はこんな感じ、大晦日は大掃除とかいろいろして、1日は、
まったりして、2日は初詣でとかで
3日は親族がきたりしてと言う感じですね。そして4日はだら?としてます!?
ちなみにお正月、おせち料理食べる派ですか?このおせち料理を食べる習慣が
だんだん無くなってきているそうですよ。これも時代の流れなんですね・・・自分の家も
おせち料理というおせち料理ではないみたいです(たぶん)。
トイウコトデ、今年1年、訪問者してくださった方々、ありがとうございます(感謝!!)。
また、来年もzip358.comをよろしくお願いしますm(_ _)m
※お正月も休まずにブログ更新は行いますので( ゚д゚)ノ ヨロ( ゚д゚)ノ ヨロ男

Broadcast live streaming video on Ustream

タグ

, 4日はだら, Broadcast live streaming video on Ustream, zip358.com, ウォーキング, おせち料理, おせち料理食べる派, お正月, カウントダウン, カウントダウンTV, トイウコトデ, ニューヨークタイムズスクウェアLIVE, 余談, 初詣で, 大掃除, 大晦日, 年末年始, 来年, 親族, 訪問者, 食生活,

【書籍】ノマンド化する時代、伝わる文書を書く技術、サイバーセキュリティ読本

2014.12.11

Logging

【書籍】ノマンド化する時代、伝わる文書を書く技術、サイバーセキュリティ読本を購入していた(過去形)。だいたい今年、購入したかった本をすべて買い揃えた感じです、徐々に読んでいこうと思います。ちなみにサイバーセキュリティ読本を若干よんだのですが、ネットってこわいなという印象しか残らないです。特にSNSとかいうものは、使う側だけではなく。送信後に相手がどうするかも考えなくてはならいです。特に今ではLINEやフェイスブックでも、なりすましが出来てしまう感じなので、問題山積みという印象を受けました。
ちなみに昔サブ携帯をもっていたのですが、いまは持ち合わせていません(トイウカ、持っているけどサービス停止中です。一度も使うことなくサービス停止をしています。)、余談でした。
余談続き、ストマ(男)とストレスがたまるので当分の間、非公開にツイッターきりかえました。

タグ

サービス停止, サービス停止中, サイバーセキュリティ読本, ストマ, ストレス, ツイッター, トイウカ, ノマンド, ノマンド化, フェイスブック, 余談, 印象, 問題山積み, 当分, 技術, 文書, 時代, 書籍, 過去形, 非公開,