PHPStorm – 在主题类中找不到的方法

前端之家收集整理的这篇文章主要介绍了PHPStorm – 在主题类中找不到的方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个项目,我正在努力,我刚刚切换到 PHPStorm因为它开始变大,我需要一些重构工具.我注意到,由于变量未被声明为类型(就像它们在Java中一样),PHPStorm有时不知道在哪里查找变量名的方法调用.这是我的代码.
<?PHP

require_once "autoloader.PHP";


class User {

    private $userID;
    private $email;
    private $encryptedPassword;
    private $userDBWriter;
    private $company;
    private $companyInfoChangeRequest;
    private $admin;
    private $accountIsActive;
    private $dealTracker;
    private $changeRequestPending;

    function __construct($email,$encryptedPassword) {
        $this->email = $email;
        $this->encryptedPassword = $encryptedPassword;
        $this->userDBWriter = new UserDBWriter();
        $this->admin = false;
        $this->dealTracker = new DealTracker($this);
    }

    public function addUserToDB() {
        $this->userDBWriter->addUserToDB($this);
    }

    public function setUserAsAdmin($adminStatus) {
        $this->admin = (bool) $adminStatus;
    }

    public function userAccountActiveStatus($accountStatus) {
        $this->accountIsActive = (bool) $accountStatus;
    }

    public function setUserID($userID) {
        $this->userID = $userID;
    }

    public function getUserID() {
        return $this->userID;
    }

    public function getEmail() {
        return $this->email;
    }

    public function isAdmin() {
        return $this->admin;
    }

    public function isAccountActive() {
        return $this->accountIsActive;
    }

    public function getEncryptedPassword() {
        return $this->encryptedPassword;
    }

    public function toArray() {
        $userArray = array(
            "id"=>$this->userID,"email"=>$this->email,"company_name"=>$this->getCompanyName(),"business_type"=>$this->getBusinessType(),"company_phone"=>$this->getCompanyPhone(),"company_street"=>$this->getCompanyStreet(),"company_city"=>$this->getCompanyCity(),"company_zip"=>$this->getCompanyZip(),"monday_hours"=>$this->getMondayHours(),"tuesday_hours"=>$this->getTuesdayHours(),"wednesday_hours"=>$this->getWednesdayHours(),"thursday_hours"=>$this->getThursdayHours(),"friday_hours"=>$this->getFridayHours(),"saturday_hours"=>$this->getSaturdayHours(),"sunday_hours"=>$this->getSundayHours(),"store_image_path"=>$this->getStoreImagePath(),"shop_description"=>$this->getShopDescription(),"deals"=>$this->dealTracker->dealsToArray()
            );
        return $userArray;  
    }

    public function addCompany(Company $company) {
        $this->company = $company;
    }

        public function getCompanyName() {
            return $this->company->getCompanyName();
        }

        public function getBusinessType() {
            return $this->company->getBusinessType();
        }

        public function getCompanyPhone() {
            return $this->company->getCompanyPhone();
        }

        public function getCompanyStreet() {
            return $this->company->getCompanyStreet();
        }

        public function getCompanyCity() {
            return $this->company->getCompanyCity();
        }

        public function getCompanyState() {
            return $this->company->getCompanyState();
        }

        public function getCompanyZip() {
            return $this->company->getCompanyZip();
        }

        public function getMondayHours() {
            return $this->company->getMondayHours();
        }

        public function getTuesdayHours() {
            return $this->company->getTuesdayHours();
        }

        public function getWednesdayHours() {
            return $this->company->getWednesdayHours();
        }

        public function getThursdayHours() {
            return $this->company->getThursdayHours();
        }

        public function getFridayHours() {
            return $this->company->getFridayHours();
        }

        public function getSaturdayHours() {
            return $this->company->getSaturdayHours();
        }

        public function getSundayHours() {
            return $this->company->getSundayHours();
        }

        public function getStoreImagePath() {
            return $this->company->getStoreImagePath();
        }

        public function getShopDescription() {
            return $this->company->getShopDescription();
        }

        public function isBusinessVerified() {
            return $this->company->getVerifiedBusiness();
        }

    public function setCompanyInfoChangeRequest($company) {
        $this->companyInfoChangeRequest = $company;
    }

    public function submitCompanyInfoChangeRequest($company) {
        $this->companyInfoChangeRequest = new CompanyInfoChangeRequest($this,$company);
        $this->companyInfoChangeRequest->submitCompanyInfoChangeRequest();
    }

    public function cancelCompanyInfoChangeRequest() {
        if ($this->changeRequestPending) {
            $this->companyInfoChangeRequest->cancelRequest();
        }
    }

    public function isCompanyChangeRequestPending() {
        return $this->changeRequestPending;
    }

    public function approveCompanyInfoChangeRequest($company) {
        $this->companyInfoChangeRequest->approveCompanyInfoChangeRequest($this);
    }

    public function setChangeRequestPending($isPending) {
        $this->changeRequestPending = (bool) $isPending;
    }
        public function getChangeRequestCompanyName() {
            return $this->companyInfoChangeRequest->getCompanyName();
        }

        public function getChangeRequestBusinessType() {
            return $this->companyInfoChangeRequest->getBusinessType();
        }

        public function getChangeRequestCompanyPhone() {
            return $this->companyInfoChangeRequest->getCompanyPhone();
        }

        public function getChangeRequestCompanyStreet() {
            return $this->companyInfoChangeRequest->getCompanyStreet();
        }

        public function getChangeRequestCompanyCity() {
            return $this->companyInfoChangeRequest->getCompanyCity();
        }

        public function getChangeRequestCompanyState() {
            return $this->companyInfoChangeRequest->getCompanyState();
        }

        public function getChangeRequestCompanyZip() {
            return $this->companyInfoChangeRequest->getCompanyZip();
        }

        public function getChangeRequestMondayHours() {
            return $this->companyInfoChangeRequest->getMondayHours();
        }

        public function getChangeRequestTuesdayHours() {
            return $this->companyInfoChangeRequest->getTuesdayHours();
        }

        public function getChangeRequestWednesdayHours() {
            return $this->companyInfoChangeRequest->getWednesdayHours();
        }

        public function getChangeRequestThursdayHours() {
            return $this->companyInfoChangeRequest->getThursdayHours();
        }

        public function getChangeRequestFridayHours() {
            return $this->companyInfoChangeRequest->getFridayHours();
        }

        public function getChangeRequestSaturdayHours() {
            return $this->companyInfoChangeRequest->getSaturdayHours();
        }

        public function getChangeRequestSundayHours() {
            return $this->companyInfoChangeRequest->getSundayHours();
        }

        public function getChangeRequestStoreImagePath() {
            return $this->companyInfoChangeRequest->getStoreImagePath();
        }

        public function getChangeRequestShopDescription() {
            return $this->companyInfoChangeRequest->getShopDescription();
        }

}

一些警告“在类中找不到方法…”的方法是getCompanyName()getBusinessType()getCompanyPhone()以及在$this-> company或$this-> companyInfoChangeRequest上调用方法的任何其他方法.

我知道为什么会这样.这是因为PHPStorm不知道变量是什么的实例.我注意到这里Method not found in class他们使用PHPDoc注释键入提示变量类型,以便PHPStorm知道在哪里查看.我想要一个“非评论”的解决方案,因为如果我将来发表评论,我有可能删除它.抱歉长班.我正在将项目导入PHPStorm,因此我可以开始进行一些重构.谢谢.

简答:

添加$this-> company = new Company;到你的__construct函数.现在,PHPStorm确切知道$this->公司的功能.

说明:

这可能会使您的应用程序变得非常复杂,因为它将从User :: __构造中调用Company :: __构造 – 有效地使其处理和内存有效负载加倍,因为从我可以看到,公司的实例已经存在.也许您不再需要在User类之外创建Company的实例?

此外,由于你已经在内存中有了一个$company对象,因此规范化你的类并在“Company”类中放置(并使用)所有“Company”功能似乎更实际,并将“User”类限制为“用户功能,只需使用$company-> getCompanyName()来获取该信息,而不是循环$user-> getCompanyName()函数 – 无论如何只调用$company-> getCompanyName().

试一试,看看你的想法?

猜你在找的PHP相关文章