Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support命名空间问题 #339

Closed
lscho opened this issue Oct 10, 2022 · 9 comments
Closed

support命名空间问题 #339

lscho opened this issue Oct 10, 2022 · 9 comments

Comments

@lscho
Copy link

lscho commented Oct 10, 2022

框架默认使用了support这个命名空间,并且预置了一些内容,虽然可以通过自定义同名文件并且加到 config/autoload.php 中来覆盖掉。但是编辑器无法读取自定义的文件,代码提示的时候还是框架默认的文件,这个是否有办法优化呢?

@walkor
Copy link
Owner

walkor commented Oct 10, 2022

这边没有好的办法

@lscho
Copy link
Author

lscho commented Oct 12, 2022

未来会优化吗

@walkor
Copy link
Owner

walkor commented Oct 12, 2022

你自定义了哪个文件

@walkor
Copy link
Owner

walkor commented Oct 12, 2022

phpstom我这自定义了本地目录的 support\Request::get方法,代码提示和跳转都是跳转都是正确的。

@lscho
Copy link
Author

lscho commented Oct 12, 2022

我定义的是Model,用了thinkORM ,但编辑器还是会提示illuminate的方法。编辑器是VScode

@walkor
Copy link
Owner

walkor commented Oct 12, 2022

没必要用 support/Model,建议用 app/Model,support目录里尽量不放代码,所有代码尽量放在app目录下。

@lscho
Copy link
Author

lscho commented Oct 12, 2022

是因为默认情况下,即使安装了thinkORM ,但代码提示还是提示的 illuminate。所以我才 support/Model 覆盖了一下框架自带的命名空间。但是这样虽然thinkORM 的方法会提示,illuminate的方法也会提示,导致有些情况下代码提示就很乱。

@walkor
Copy link
Owner

walkor commented Oct 13, 2022

我觉得你是弄错了,根据thinkorm手册,thinkorm使用 think\Model;,不应该使用support\Model
如果你要自己定义一个自己的thinkorm model的基类,把基类放到app目录下,比如

namespace app;

class Model extends \think\Model
{
   
}

和support/Model 一点关系都没有,我觉得vscode不会这么蠢到提示到support/Model上去

@lscho
Copy link
Author

lscho commented Oct 13, 2022

抱歉,重新看了遍文档,可能我理解错了。我以为在项目目录 support 下面加载了一个文件之后,框架里 support 下面的同名文件就不加载了。但是文档说的只是优先加载项目目录的文件。所以我下面的用法应该是错的。

我需要扩充模型的一些方法。所以我在 support\Model.php 写了如下代码:

<?php
namespace support;

use think\Model as BaseModel;

class Model extends BaseModel
{

}

然后在模型中

<?php

namespace app\model;

use support\Model;

class Test extends Model
{
    protected $table = 'test';
}

这样会导致模型同时提示ThinkORM和Eloquent ORM的一些方法。

我把support\Model.php改成support\ThinkORM.php,然后模型继承 ThinkORM 就正常了。

@lscho lscho closed this as completed Oct 13, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants