おはようございます.以前作ったコードを改修して、いまの自分が書いたらどうなるのだろうかと思って書いたコードをQiitaとGithubにアップしました.書いてみて思ったのは、やはりコードは書けば書くほど進化していくのだなという事.
そして思うのはAIにはこのコードは今の所書けないような気がしています.典型的なコードでもなく洗練すぎたコードでもないので、書けそうにない.見る人がみるとこれは人が書いたコードだと分かるかなと思います.
そういうのがコレからは人が書いたコードというお墨付きを貰えるのではないかと思います.なので、ちょっと完璧なコードではないコードを書いて行こうと思います.仕事ではAIを使用することが今後多くなると思うけど、まだ次の職に付いていないので毎日コードを精進のために書いていきます.
過去記事はこちら
https://zip358.com/2022/10/12/%e5%88%b6%e9%99%90%e4%bb%98%e3%81%8d%e3%81%ae%e3%82%af%e3%83%ad%e3%83%b3%e3%82%92%e7%84%a1%e9%99%90%e5%af%bf%e9%99%90%e7%84%a1%e3%81%ab%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95%e3%80%82-php-%e7%84%a1.html
で、今回書いたソースコードはこちらになります.
<?php
class CronExpansion
{
private $filepath = 'crontab.json';
private $cronTabs = null;
public function __construct()
{
$fileData = file_get_contents($this->filepath);
$cronTabData = json_decode($fileData);
$this->cronTabs = !json_last_error() ? (object)$cronTabData : (object)[];
return $this;
}
public function run(): object
{
$datetime = new DateTime();
$dateData = explode(',', $datetime->format('m,d,H,i,w'));
foreach ($this->cronTabs as $cronTab) {
$i = 0;
$flg = true;
$command = null;
$cronTabDatas = get_object_vars($cronTab);
if (count($cronTabDatas) === 6) {
foreach ($cronTabDatas as $key => $val) {
if ($flg) {
switch ($key) {
case 'command':
$command = $val;
break;
case 'w':
if (!(int)$val[(int)$dateData[$i]]) {
$flg = false;
continue;
}
break;
default:
if (preg_match('/^\*\/[0-9]{1,2}$/u', $val)) {
if (((int)$dateData[$i] % ((int)str_replace('*/', '', $val))) > 0) {
$flg = false;
continue;
}
} elseif (preg_match('/^\*$/u', $val)) {
} elseif ((int)$dateData[$i] !== (int)$val) {
$flg = false;
continue;
}
break;
}
}
$i++;
}
if ($flg) {
//echo $command;
exec($command . " > /dev/null &");
}
}
}
return $this;
}
}
(new CronExpansion)->run();
明日へ続く