React

状态提升

要从多个子组件收集数据,或让两个子组件互相通信,请改为在其父组件中声明State。父组件可以通过props将该State传回给子组件。这使子组件彼此同步并与其父组件保持同步。

调用setSquares函数让React知道组件state已经改变。这将触发使用squares state的组件(Board)及其子组件(Square组件)的重新渲染。

LaravelStudy

Model Scope

Customizing Pagination URLs

By default, links generated by the paginator will match the current request’s URI. However, the paginator’s withPath method allows you to customize the URI used by the paginator when generating links. For example, if you want the paginator to generate links like example.com/admin/users?page=N, you should pass /admin/users to the withPath method:

1
2
3
4
5
6
7
8
9
use App\Models\User;

Route::get('/users', function () {
$users = User::paginate(15);

$users->withPath('/admin/users');

// ...
});

Blade Components

slot -> x -> slot -> slot -> slot -> x

stdClass 类 (PHP 4, PHP 5, PHP 7, PHP 8)

具有动态属性的通用空类。

此类的对象可以使用 new 运算符实例化,也可以通过类型转换为对象创建。几个 PHP 函数也会创建此类的实例,比如 json_decode()、mysqli_fetch_object() 或 PDOStatement::fetchObject()。

尽管没有实现 **get()/**set() 魔术方法,但此类允许动态属性且不需要 #[\AllowDynamicProperties] 属性。

这不是 PHP 的基类,因为 PHP 没有通用基类的概念。然而,可以创建继承 stdClass 的自定义类,从而继承动态属性的功能。

简直不是人话

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$obj = (object) array('foo' => 'bar');
var_dump($obj);

object(stdClass)#1 (1) {
["foo"]=>
string(3) "bar"
}

$json = '{"foo":"bar"}';
var_dump(json_decode($json));

object(stdClass)#1 (1) {
["foo"]=>
string(3) "bar"
}

$obj = new stdClass();
$obj->foo = 42;
$obj->{1} = 42;
var_dump($obj);

object(stdClass)#1 (2) {
["foo"]=>
int(42)
["1"]=>
int(42)
}

超かっこいい → 箭头函数 (アロー関数)

箭头函数是 PHP 7.4 的新语法,是一种更简洁的 匿名函数 写法。

匿名函数和箭头函数都是 Closure 类的实现。

箭头函数的基本语法为 fn (argument_list) => expr。

箭头函数支持与 匿名函数 相同的功能,只是其父作用域的变量总是自动的。 简直不是人话

当表达式中使用的变量是在父作用域中定义的,它将被隐式地按值捕获。在下面的例子中,函数 $fn1 和 $fn2 的行为是一样的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

$y = 1;

$fn1 = fn($x) => $x + $y;
// 相当于通过 value 使用 $y:
$fn2 = function ($x) use ($y) {
return $x + $y;
};

var_export($fn1(3));
?>

<?php

$z = 1;
$fn = fn($x) => fn($y) => $x * $y + $z;
// 输出 51
var_export($fn(5)(10));
?>

StudySwift

About Funtions

  • Functions let use reuse code easily by carving off chunks of code and giving it a name.
  • All functions start with the word func, followed by the function’s name. The function’s body is contained inside opening and closing braces.
  • We can add parameters to make our functions more flexible - list them out one by one separated by commas: the name of the parameter, then a colon, then the type of the parameter.
  • You can control how those parameter names are used externally, either by using a custom external parameter name or by using an undersocre to disable the external name for that parameter.
  • Functions can return value if you want, but if want to return multiple pieces of data from a function you should use a tuple. These hold several named elements, but it’s limlited in a way a dictionary is not - you list each element specifically, along with is type.
  • Fcuntions can throw errors: you create an enum defining the errors you want to happedn, throw those inside the function as needed, then use do, try, and catch to handle them at the call site.

最近の日常

けやきざかの歌めっちゃ好きで、特に YouTube でライブを見た時に、すごくその衝撃を受ける。

会社の人たちになんかも日本を勉強してって言われて、結局どこから勉強するのがすごくわからないです。

GWの間に自分の車で四国に行きました。とはいえ、あんまり旅の感じはなかった。知り合いのせさんという人が僕はただガソリンを捨てに行くだけ。考えてみたら、その言い方間違い所もないです。

前日の夜寝ずに走って、夜の何時から大雨が降ってきて、眠気がすごくて、車一旦三重県のとこかのコンビニのところに止めて、車の中で少し寝ました。起きた時には4時ごろ、そこから名阪国道を使って、大阪方面へ走って、朝5時ごろか6時ごろかはっきり覚えていないくて、奈良の天理までの山道のところに、すごい綺麗な景色でした。残念なことは写真撮ってなかった。雨上がったばかりの山頂でいつも違う景色でした。大阪についたら、400円の銭湯みたいな温泉に行きました。安いのがやっぱりその安さの理由があります。銭湯以外に何もなかった。ボディーソープとか石鹸とかもなかった。その後は万博のところへ、初めての大阪道、駐車場の入り口を間違えて一方通行の道3回回しました。やっと駐車場に着いたら、もうお昼12頃でした。