IntelliJ IDEA 12 not finding CodeIgniter classes, throwing errors

后端 未结 2 2119
清歌不尽
清歌不尽 2021-02-09 02:40

I\'m using IntelliJ IDEA 12 to develop a PHP web application using the CodeIgniter framework. Due to the way CI instantiates objects and methods, IDEA thinks they don\'t exist w

相关标签:
2条回答
  • 2021-02-09 03:17

    I solved this by following this guide. It was meant for PHPStorm but works for IntelliJ IDEA as well (probably WebStorm too!). It was very simple, actually. A basic recap:

    1. Saved the following PHP code in my project root. It's basically just a PHPDoc comment:
        <?php  die('This file is not really here!');
    
        /**
         * ------------- DO NOT UPLOAD THIS FILE TO LIVE SERVER ---------------------
         *
         * Implements code completion for CodeIgniter in phpStorm
         * phpStorm indexes all class constructs, so if this file is in the project it will be loaded.
         * -------------------------------------------------------------------
         * Drop the following file into a CI project in phpStorm
         * You can put it in the project root and phpStorm will load it.
         * (If phpStorm doesn't load it, try closing the project and re-opening it)
         * 
         * Under system/core/
         * Right click on Controller.php and set Mark as Plain Text
         * Do the same for Model.php
         * -------------------------------------------------------------------
         * This way there is no editing of CI core files for this simple layer of code completion.
         *
         * PHP version 5
         *
         * LICENSE: GPL http://www.gnu.org/copyleft/gpl.html
         *
         * Created 1/28/12, 11:06 PM
         *
         * @category
         * @package    CodeIgniter CI_phpStorm.php
         * @author     Jeff Behnke
         * @copyright  2009-11 Valid-Webs.com
         * @license    GPL http://www.gnu.org/copyleft/gpl.html
         * @version    2012.01.28
         */
    
        /**
         * @property CI_DB_active_record $db              This is the platform-independent base Active Record implementation class.
         * @property CI_DB_forge $dbforge                 Database Utility Class
         * @property CI_Benchmark $benchmark              This class enables you to mark points and calculate the time difference between them.
    Memory consumption can also be displayed. * @property CI_Calendar $calendar This class enables the creation of calendars * @property CI_Cart $cart Shopping Cart Class * @property CI_Config $config This class contains functions that enable config files to be managed * @property CI_Controller $controller This class object is the super class that every library in.
    CodeIgniter will be assigned to. * @property CI_Email $email Permits email to be sent using Mail, Sendmail, or SMTP. * @property CI_Encrypt $encrypt Provides two-way keyed encoding using XOR Hashing and Mcrypt * @property CI_Exceptions $exceptions Exceptions Class * @property CI_Form_validation $form_validation Form Validation Class * @property CI_Ftp $ftp FTP Class * @property CI_Hooks $hooks Provides a mechanism to extend the base system without hacking. * @property CI_Image_lib $image_lib Image Manipulation class * @property CI_Input $input Pre-processes global input data for security * @property CI_Lang $lang Language Class * @property CI_Loader $load Loads views and files * @property CI_Log $log Logging Class * @property CI_Model $model CodeIgniter Model Class * @property CI_Output $output Responsible for sending final output to browser * @property CI_Pagination $pagination Pagination Class * @property CI_Parser $parser Parses pseudo-variables contained in the specified template view,
    replacing them with the data in the second param * @property CI_Profiler $profiler This class enables you to display benchmark, query, and other data
    in order to help with debugging and optimization. * @property CI_Router $router Parses URIs and determines routing * @property CI_Session $session Session Class * @property CI_Sha1 $sha1 Provides 160 bit hashing using The Secure Hash Algorithm * @property CI_Table $table HTML table generation
    Lets you create tables manually or from database result objects, or arrays. * @property CI_Trackback $trackback Trackback Sending/Receiving Class * @property CI_Typography $typography Typography Class * @property CI_Unit_test $unit_test Simple testing class * @property CI_Upload $upload File Uploading Class * @property CI_URI $uri Parses URIs and determines routing * @property CI_User_agent $user_agent Identifies the platform, browser, robot, or mobile devise of the browsing agent * @property CI_Validation $validation //dead * @property CI_Xmlrpc $xmlrpc XML-RPC request handler class * @property CI_Xmlrpcs $xmlrpcs XML-RPC server class * @property CI_Zip $zip Zip Compression Class * @property CI_Javascript $javascript Javascript Class * @property CI_Jquery $jquery Jquery Class * @property CI_Utf8 $utf8 Provides support for UTF-8 environments * @property CI_Security $security Security Class, xss, csrf, etc... */ class CI_Controller{} /** * @property CI_DB_active_record $db This is the platform-independent base Active Record implementation class. * @property CI_DB_forge $dbforge Database Utility Class * @property CI_Benchmark $benchmark This class enables you to mark points and calculate the time difference between them.
    Memory consumption can also be displayed. * @property CI_Calendar $calendar This class enables the creation of calendars * @property CI_Cart $cart Shopping Cart Class * @property CI_Config $config This class contains functions that enable config files to be managed * @property CI_Controller $controller This class object is the super class that every library in.
    CodeIgniter will be assigned to. * @property CI_Email $email Permits email to be sent using Mail, Sendmail, or SMTP. * @property CI_Encrypt $encrypt Provides two-way keyed encoding using XOR Hashing and Mcrypt * @property CI_Exceptions $exceptions Exceptions Class * @property CI_Form_validation $form_validation Form Validation Class * @property CI_Ftp $ftp FTP Class * @property CI_Hooks $hooks Provides a mechanism to extend the base system without hacking. * @property CI_Image_lib $image_lib Image Manipulation class * @property CI_Input $input Pre-processes global input data for security * @property CI_Lang $lang Language Class * @property CI_Loader $load Loads views and files * @property CI_Log $log Logging Class * @property CI_Model $model CodeIgniter Model Class * @property CI_Output $output Responsible for sending final output to browser * @property CI_Pagination $pagination Pagination Class * @property CI_Parser $parser Parses pseudo-variables contained in the specified template view,
    replacing them with the data in the second param * @property CI_Profiler $profiler This class enables you to display benchmark, query, and other data
    in order to help with debugging and optimization. * @property CI_Router $router Parses URIs and determines routing * @property CI_Session $session Session Class * @property CI_Sha1 $sha1 Provides 160 bit hashing using The Secure Hash Algorithm * @property CI_Table $table HTML table generation
    Lets you create tables manually or from database result objects, or arrays. * @property CI_Trackback $trackback Trackback Sending/Receiving Class * @property CI_Typography $typography Typography Class * @property CI_Unit_test $unit_test Simple testing class * @property CI_Upload $upload File Uploading Class * @property CI_URI $uri Parses URIs and determines routing * @property CI_User_agent $user_agent Identifies the platform, browser, robot, or mobile devise of the browsing agent * @property CI_Validation $validation //dead * @property CI_Xmlrpc $xmlrpc XML-RPC request handler class * @property CI_Xmlrpcs $xmlrpcs XML-RPC server class * @property CI_Zip $zip Zip Compression Class * @property CI_Javascript $javascript Javascript Class * @property CI_Jquery $jquery Jquery Class * @property CI_Utf8 $utf8 Provides support for UTF-8 environments * @property CI_Security $security Security Class, xss, csrf, etc... */ class CI_Model{}

    2. Found /system/core/controller.php and /system/core/model.php inside of IntelliJ IDEA and right clicked->Mark as Plain Text.

    3. Done! It works great, no more false errors, and code completion!

    enter image description here

    0 讨论(0)
  • 2021-02-09 03:25

    This is the solution that worked for me: https://github.com/Stunt/Codeigniter-autocomplete/

    I'm using phpStorm but I imagine it would work with IDEA.

    No need to mark files as plain text. Just drop the autocomplete.php file into the application/config folder and it works. I doubt the link at github will go bad but just in case here is the content of the file.

    <?php
    // help IDE(s) support Codeigniter 2.0
    /**
     * @property CI_DB_active_record $db
     * @property CI_DB_forge $dbforge
     * @property CI_Benchmark $benchmark
     * @property CI_Calendar $calendar
     * @property CI_Cart $cart
     * @property CI_Config $config
     * @property CI_Controller $controller
     * @property CI_Email $email
     * @property CI_Encrypt $encrypt
     * @property CI_Exceptions $exceptions
     * @property CI_Form_validation $form_validation
     * @property CI_Ftp $ftp
     * @property CI_Hooks $hooks
     * @property CI_Image_lib $image_lib
     * @property CI_Input $input
     * @property CI_Language $language
     * @property CI_Loader $load
     * @property CI_Log $log
     * @property CI_Model $model
     * @property CI_Output $output
     * @property CI_Pagination $pagination
     * @property CI_Parser $parser
     * @property CI_Profiler $profiler
     * @property CI_Router $router
     * @property CI_Session $session
     * @property CI_Sha1 $sha1
     * @property CI_Table $table
     * @property CI_Trackback $trackback
     * @property CI_Typography $typography
     * @property CI_Unit_test $unit_test
     * @property CI_Upload $upload
     * @property CI_URI $uri
     * @property CI_User_agent $user_agent
     * @property CI_Validation $validation
     * @property CI_Xmlrpc $xmlrpc
     * @property CI_Xmlrpcs $xmlrpcs
     * @property CI_Zip $zip
     *
     *
     *
     * These are samples entries to make my own functions work. 
     * Remove these and add you custom ones.
     * @property Tank_auth $tank_auth
     * @property Users_model $users_model
     * @property Firms_model $firms_model
     * @property Firms_model_master $firms_model_master
     *
     *
     */
    class CI_Controller {};
    class MY_Controller extends CI_Controller {};
    /**
     * @property CI_DB_active_record $db
     * @property CI_DB_forge $dbforge
     * @property CI_Config $config
     * @property CI_Loader $load
     * @property CI_Session $session
     */
    class CI_Model {};
    /* End of file autocomplete.php */
    /* Location: ./application/config/autocomplete.php */
    ?>
    

    UPDATE for CIv3: If you are using CodeIgniter V 3.x, use this instead.

    <?php
    /**
     * @property CI_DB_query_builder|CI_DB_postgre_driver $db              This is the platform-independent base Active Record implementation class.
     * @property CI_DB_forge $dbforge                 Database Utility Class
     * @property CI_Benchmark $benchmark              This class enables you to mark points and calculate the time difference between them.<br />  Memory consumption can also be displayed.
     * @property CI_Calendar $calendar                This class enables the creation of calendars
     * @property CI_Cart $cart                        Shopping Cart Class
     * @property CI_Config $config                    This class contains functions that enable config files to be managed
     * @property CI_Controller $controller            This class object is the super class that every library in.<br />CodeIgniter will be assigned to.
     * @property CI_Email $email                      Permits email to be sent using Mail, Sendmail, or SMTP.
     * @property CI_Encrypt $encrypt                  Provides two-way keyed encoding using XOR Hashing and Mcrypt
     * @property CI_Exceptions $exceptions            Exceptions Class
     * @property CI_Form_validation $form_validation  Form Validation Class
     * @property CI_Ftp $ftp                          FTP Class
     * @property CI_Hooks $hooks                      Provides a mechanism to extend the base system without hacking.
     * @property CI_Image_lib $image_lib              Image Manipulation class
     * @property CI_Input $input                      Pre-processes global input data for security
     * @property CI_Lang $lang                        Language Class
     * @property CI_Loader $load                      Loads views and files
     * @property CI_Log $log                          Logging Class
     * @property CI_Model $model                      CodeIgniter Model Class
     * @property CI_Output $output                    Responsible for sending final output to browser
     * @property CI_Pagination $pagination            Pagination Class
     * @property CI_Parser $parser                    Parses pseudo-variables contained in the specified template view,<br />replacing them with the data in the second param
     * @property CI_Profiler $profiler                This class enables you to display benchmark, query, and other data<br />in order to help with debugging and optimization.
     * @property CI_Router $router                    Parses URIs and determines routing
     * @property CI_Session $session                  Session Class
     * @property CI_Encryption $encryption            The Encryption Library provides two-way data encryption
     * @property CI_Table $table                      HTML table generation<br />Lets you create tables manually or from database result objects, or arrays.
     * @property CI_Trackback $trackback              Trackback Sending/Receiving Class
     * @property CI_Typography $typography            Typography Class
     * @property CI_Unit_test $unit_test              Simple testing class
     * @property CI_Upload $upload                    File Uploading Class
     * @property CI_URI $uri                          Parses URIs and determines routing
     * @property CI_User_agent $user_agent            Identifies the platform, browser, robot, or mobile devise of the browsing agent
     * @property CI_Form_validation $validation
     * @property CI_Xmlrpc $xmlrpc                    XML-RPC request handler class
     * @property CI_Xmlrpcs $xmlrpcs                  XML-RPC server class
     * @property CI_Zip $zip                          Zip Compression Class
     * @property CI_Javascript $javascript            Javascript Class
     * @property CI_Jquery $jquery                    Jquery Class
     * @property CI_Utf8 $utf8                        Provides support for UTF-8 environments
     * @property CI_Security $security                Security Class, xss, csrf, etc...
     * @property Tank_auth $tank_auth
     *
     */
    class CI_Controller{}
    class MY_Controller extends CI_Controller {};
    /**
     * @property CI_DB_query_builder|CI_DB_postgre_driver $db              This is the platform-independent base Active Record implementation class.
     * @property CI_DB_forge $dbforge                 Database Utility Class
     * @property CI_Benchmark $benchmark              This class enables you to mark points and calculate the time difference between them.<br />  Memory consumption can also be displayed.
     * @property CI_Calendar $calendar                This class enables the creation of calendars
     * @property CI_Cart $cart                        Shopping Cart Class
     * @property CI_Config $config                    This class contains functions that enable config files to be managed
     * @property CI_Controller $controller            This class object is the super class that every library in.<br />CodeIgniter will be assigned to.
     * @property CI_Email $email                      Permits email to be sent using Mail, Sendmail, or SMTP.
     * @property CI_Encrypt $encrypt                  Provides two-way keyed encoding using XOR Hashing and Mcrypt
     * @property CI_Exceptions $exceptions            Exceptions Class
     * @property CI_Form_validation $form_validation  Form Validation Class
     * @property CI_Ftp $ftp                          FTP Class
     * @property CI_Hooks $hooks                      Provides a mechanism to extend the base system without hacking.
     * @property CI_Image_lib $image_lib              Image Manipulation class
     * @property CI_Input $input                      Pre-processes global input data for security
     * @property CI_Lang $lang                        Language Class
     * @property CI_Loader $load                      Loads views and files
     * @property CI_Log $log                          Logging Class
     * @property CI_Model $model                      CodeIgniter Model Class
     * @property CI_Output $output                    Responsible for sending final output to browser
     * @property CI_Pagination $pagination            Pagination Class
     * @property CI_Parser $parser                    Parses pseudo-variables contained in the specified template view,<br />replacing them with the data in the second param
     * @property CI_Profiler $profiler                This class enables you to display benchmark, query, and other data<br />in order to help with debugging and optimization.
     * @property CI_Router $router                    Parses URIs and determines routing
     * @property CI_Session $session                  Session Class
     * @property CI_Encryption $encryption            The Encryption Library provides two-way data encryption
     * @property CI_Table $table                      HTML table generation<br />Lets you create tables manually or from database result objects, or arrays.
     * @property CI_Trackback $trackback              Trackback Sending/Receiving Class
     * @property CI_Typography $typography            Typography Class
     * @property CI_Unit_test $unit_test              Simple testing class
     * @property CI_Upload $upload                    File Uploading Class
     * @property CI_URI $uri                          Parses URIs and determines routing
     * @property CI_User_agent $user_agent            Identifies the platform, browser, robot, or mobile devise of the browsing agent
     * @property CI_Form_validation $validation
     * @property CI_Xmlrpc $xmlrpc                    XML-RPC request handler class
     * @property CI_Xmlrpcs $xmlrpcs                  XML-RPC server class
     * @property CI_Zip $zip                          Zip Compression Class
     * @property CI_Javascript $javascript            Javascript Class
     * @property CI_Jquery $jquery                    Jquery Class
     * @property CI_Utf8 $utf8                        Provides support for UTF-8 environments
     * @property CI_Security $security                Security Class, xss, csrf, etc...
     * @property Tank_auth $tank_auth
     */
    class CI_Model {};
    

    I cannot take credit for all of this. I found a lot of these but do not recall where. I did need to add some to make it complete though.

    0 讨论(0)
提交回复
热议问题