PHP的类和对象
有一种被称为「函数式」语言,而PHP是「面向对象」的。
据说在统计等领域更适合使用「函数式」,而在提取和显示数据方面更适合使用「面向对象」。
面向对象的
创建实例的那个。
可以创建Person类的实例,比如Bob或Mary。
创建一个班级
<?php
namespace App;
class TaskService {
//プロパティ
public $hoge;
//メソッド
public function hoge(){
}
}
使用课程
在PHP中,要调用属性和方法可以使用箭头(->)。
Route::get('/', function(){
$hhoge = new TaskService();
$hoge->hoge;
$hoge->hoge();
return "hogehoge";
});
带有默认值
<?php
namespace App;
class TaskService {
public $hoge;
public function hoge($arg1, $arg2=null){
}
}
如果要给默认值,则将其放在后面。
受保护的、公有的、私有的/静态的
保护
只能在类内或继承类中调用。
公开
可以从其他地方进行调用。
私密的
只能在类内部调用。
静态的有点不同类型。
-
- new Person
- Person::
决定在哪里进行调用。
塑造形状
<?php
namespace App;
class TaskService {
public $hoge;
public function hoge(bool $arg1,array $arg2=null): array
{
}
}
当返回类型为数组时,称之为返回类型提示。
如果没有返回值,则可以使用 :void。
班级的角色
-
- 処理
- データ
让我们明确一下要进行哪个课程。
处理数据的类:实体
将数组数据解析成
<?php
namespace App;
class TaskInfo
{
public $name;
public $important;
通过假设,就能够像 name 一样得到。
<?php
namespace App;
class TaskService {
public $hoge;
public function hoge(TaskInfo $arg1,array $arg2=null): array
{
$name = $arg1->name;
}
}
构造函数
<?php
namespace App;
use App\TaskInfo;
class TaskService
{
public $name;
public $important;
public function __construct(
TaskInfo $task
){
$this->task = $task;
}
对于每个
$props = ["name", "title"];
foreach($props as $propName){
$this->{$propName};
}
$methodName = "piyo";
$this->$methodName();
类的继承 de jì
使用extends。
如果不写任何内容来创建与父方法相同的方法,那么父内容将不会被执行。
当以parent方式调用如下时,可以添加各种其他描述到父方法中。
<?php
namespace App;
class TaskInfo extends Model
{
public function save(array $options = []){
parent::save($options);
//do something...
return [];
}
}
PHP的重载
听说PHP的重载与一般的重载完全不同。
对象可被视为一个字符串
public function __toString(){
return "this is task Service";
}
作成できる
public function __invoke(){
return "hogehoge";
}
另外还有一些其他的
-
- __get
- __call