ajaxはクロスドメインを許していないのでこうするしかない?わけではないけれど(提供会社による)

ライブドアが提供している天気予報APIをJSだけで
なんとか出来ないかと思ったので試してみたけれど無理でしたので、
一回、PHPで読み込んでその情報を取得するという事で解決。

昔はYahooがそういう事を提供してたみたいですが
提供終了してました。

<div style="display: table;">
        <div style="display: table-cell;">
            今日の天気::<br>
            <img id="weather_0" src="">
        </div>
        <div style="display: table-cell;">
            明日の天気<br>
            <img id="weather_1" src="">
        </div>
    </div>

 

<script>
$(function(){
    $.ajax({
        type: 'GET',
        //'http://weather.livedoor.com/forecast/webservice/json/v1?city=390010',
        url: 'https://zip358.com/weather/',
        data:null,
        dataType: 'json'
    }).done(function(data){
        $("#weather_0").attr("src",data.forecasts["0"].image.url);
        $("#weather_1").attr("src",data.forecasts["1"].image.url);
    });
});
</script>

Standard PHP Library(SPL)というライブラリーには便利な関数が入っている。

The Standard PHP Library (SPL) は、標準的な問題を解決するためのインターフェイスやクラスを集めたものですと公式ページに書かれている通り
便利な関数です。例としてspl_autoload_registerを紹介。
ぐぐるとどんな機能なのか書かれているので割愛してます。

<?php
spl_autoload_register(function($name){
    include __DIR__ . DIRECTORY_SEPARATOR ."class" . DIRECTORY_SEPARATOR . $name . '.php';
});

$class_demo = new class_demo();

全ての定義済の変数を配列で返す

全ての定義済の変数を配列で返す関数です。
全てなのでとってきて欲しくないものまでも取ってきます。
なのでそういうのはunsetします。
ちなみに似たようなのでcompactという関数がPHPには存在します。

何に使用する場合に便利かは人それぞれ違いますが
自分の場合はテンプレートエンジンを使用するときに重宝してます。
テンプレートエンジン・・・TwigやSmartyなど

<?php

$a = "abc";
$b = array(1,2,3);
$c = 123;

$vars = get_defined_vars();
unset($_COOKIE);
unset($_POST);
unset($_GET);
unset($_FILES);
unset($GLOBALS);
foreach ($vars as $key => $value) {
    var_dump($key);
    var_dump($value);
}
//...
var_dump($vars);

 

ネームスペースの利点はこれだと思っている。

ネームスペースの利点はこれだと思っている。
複数人で開発とかしているときに関数名やクラスなどが
かぶってしまう可能性ある、そういうのを
解決してくれるのがネームスペースということです。

<?php
namespace test\demo;

class test{
    function demo():string
    {
        return "demo1\n";
    }
}

namespace test\demo2;
 
class test{
    function demo():string
    {
        return "demo2\n"; 
    }
  }

 

<?php
include_once "./index-6.php";

$demo = new  test\demo\test();
print $demo->demo();
$demo = new  test\demo2\test();
print $demo->demo();

PHP忘れてしまいそう。

こういう書き方とか書かなかったら忘れてしまいそうですね。
クラスの多重継承とか職場ではそもそもしない。Functionで十分な感じで
この頃、ろくなコードを書いていません。FunctionからFunctionへなんて
コードを書いてたりしています。

 

<?php

function demo1(int $val=0):int
{
    return 3 * 3 * $val;
}

print demo1(3);


class demo2
{
    public static function test1():string
    {
        return "ABC";
    }
}

$demo2  = "demo2";
print $demo2::test1();


trait demo3
{
    public static function test2($val=""){
        return $val;
    }
    
}

class demo4 
{
    public static function test3($val = "")
    {
        return $val;
    }
}

class demo5 extends demo4
{
    use demo3;
    public static function test4($val = "")
    {
        return $val;
    }
}

$demo5 = 'demo5';
print $demo5::test2(1);
print $demo5::test3(2);
print $demo5::test4(3);

PHPでバインドするこれでSQLの脆弱性が!?

上記の画像では脆弱性がある。

PHPでバインドするこれでSQLの脆弱性が解決してくれる?
こういう記述すると良さげ。
おまけでSQLデバッグ方法を書いとります。

<?php
$sql =<<<SQL
select * from demo where id = :id and namae = :hoge;
SQL;
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$id = 123;
$hoge = "hoge";
$sth = $dbh->prepare($sql);
$sth->bindValue(':id', $id, PDO::PARAM_INT);
$sth->bindValue(':hoge', $hoge, PDO::PARAM_STR);
$sth->execute();

//mysql log?https://github.com/panique/pdo-debug:$sth->debugDumpParams();

$fval = array(
    ':id'=>1,
    ':name'=>"hoge"
);
$sth = $dbh->prepare($sql);
$sth->execute($fval);
print PdoDebugger::show($sql, $fval);
$sth->debugDumpParams();

WordPressの全記事の中からランダムで記事をピックアップしてツイートする。

WordPressの全記事の中からランダムで記事をピックアップしてツイートする。
実際、自分の階層に合わして呼び出しを変更してください。
なお、さくらレンタルサーバーでクロンの設定をして自動投稿できます。
ライブラリの設置などは割愛してます。

<?php
// cron:: cd /home/user/www/zip358.com/site/tw; /usr/local/bin/php tw.php

require_once ('../../wp-load.php');
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;

$consumer_key = "XXXXXXXXXXXXXX";
$consumer_secret = "XXXXXXXXXXXX";
$access_token = "XXXXXXXXXXXXXX";
$access_token_secret = "XXXXXXXXXXXXXXX";

$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);



$args = array(
	'posts_per_page' => 1,
    'orderby' => 'rand'
);

$posts = get_posts($args);
foreach ( $posts as $val ){
    $href =  get_permalink($val->ID);
    $title = get_the_title($val->ID);
    $res = $to->post("statuses/update", array("status" => $title . " " . $href));
}

PHPで怒られる怒られない2

PHPで怒られる怒られないの違いはさて何でしょうか?
selfの使い道がポイントです。selfは静的な要素だと動作し
$thisは動的な要素だと動作します。

<?php
class demo1 
{
    static function test1()
    {
        return __METHOD__.self::test2();
    }

    static function test2()
    {
        return __FUNCTION__;
    }


}

class demo2
{
    static function  test1()
    {
        return __METHOD__.self::test2();
    }

    function test2()
    {
        return __FUNCTION__;
    }

}
$demo1 = 'demo1';
print $demo1::test1()."\n";
$demo2 = 'demo2';
print $demo2::test1()."\n";