
Cake2とCake4の beforeSave() の移行時の記述の差異についてです。Cake4は主に各引数にオブジェクトを扱うようになっているのが大きな差異かなと思います。
役割としては同じようなものと考えてよさそうです。
Cake2: beforeSave
public function beforeSave($options = Array()) {
    // 保存前の処理を書く
}
Cake4: beforeSave
use ArrayObject;
use Cake\Datasource\EntityInterface;
use Cake\Event\EventInterface;
// クラス内に記述
/**
* 各保存する前に処理
*
* @param \Cake\Event\EventInterface $event イベント
* @param \Cake\Datasource\EntityInterface $entity エンティティ
* @param \ArrayObject $options オプション
* @return 
*/
public function beforeSave(EventInterface $event, EntityInterface $entity, ArrayObject $options)
{
    // 保存前の処理を書く
}
ついでに phpdoc の記述例も載せました。先ほども述べましたが、Cake4の beforeSave() の引数は複数のオブジェクトになっています。
■ Cakephp4: beforeSave
https://book.cakephp.org/4/ja/orm/table-objects.html#beforesave