Closed jysperm closed 6 years ago
目前决定全部都改,加 LC 前缀。
需要用户实例化的类:ACL、User、Role、Bytes、Object、File、Relation、Query、GeoPoint、Push、SaveOption、Engine\FunctionError、Engine\{Lean,Laravel,Slim}Engine、Storage\{Cookie,Session}Storage
不需要用户实例化的公开类:BatchRequestError、CloudException、Region、SMS、Client、Engine\Cloud
非公开类:AppRouter、MIMEType、Operation\IOperation、Operation\{Array,Delete,Increment,Relation,Set}Operation、Storage\IStorage、Uploader\{Simple,S3,Qiniu,QCloud}Uploader
我尝试性地给所有类加 LC 前缀,代码实在是不太好看:
use \LeanCloud\Engine\LCSlimEngine;
use \LeanCloud\LCQuery;
use \LeanCloud\LCObject;
use \LeanCloud\LCClient;
$app = new \Slim\App();
LCClient::setStorage(new LCCookieStorage());
LCSlimEngine::enableHttpsRedirect();
$app->add(new LCSlimEngine());
use \LeanCloud\Engine\LCCloud;
LCCloud::run("averageStars", $params);
于是我就想,如果我们接受了「有命名空间的语言不加前缀更好」的设定,我们可以只去解决 Object 的冲突,比如只把 Object 改成 LeanObject,这个 Lean
并不是一个前缀,只是对 Object 的一个特殊处理,从语义上来讲,Object 作为我们 SDK 最基础的组件,特殊一点也是说得通的。
如果只改 Object 的话,可能可以做到在 7.2 以下继续兼容原来的 Object(通过一些运行时黑科技),这个还需要继续调研一下。
PHP 7.2 中将 Object 列为了保留关键字,导致我们的 SDK 无法工作(之前版本因为我们的 Object 在命名空间里没关系,但新版本在命名空间里也不行了),详见 https://github.com/leancloud/php-sdk/issues/173
所以这个类肯定是要改名,但还有一个问题是只改
Object -> LCObject
,还是给所有的类都加LC
前缀(或者Lean
前缀)?PS. PHP SDK 在早期版本所有类都是有
Lean
前缀的,在 0.4 中去掉了前缀 https://github.com/leancloud/php-sdk/pull/102