Jump to content
Stikki

Module creationg - init()

Recommended Posts

Howdy howdy,

I was reading stuff about module interfaces init() method and it's declared as required method while being only documentational guidance with in interface.

Even all loading methods that i see are checking against existence of this method and executing it only if it's present.

So my question: is this actually required method anymore? If not, documentation needs some update.

Share this post


Link to post
Share on other sites

Okey, then again

 * Optional methods for Module interface
 * =====================================
 * 1. __construct() - called before module config is populated.
 * 2. init() - called after module config is populated.
 * 3. ready() - called after init(), after API ready.
 *    Note that ready() applies to 'autoload' modules only. 
 * 4. ___install() - called when module is installed. 
 * 5. ___uninstall() - called when module is uninstalled. 
While method header says:
 
* While the method is required, if you don't need it, then just leave the implementation blank.

Share this post


Link to post
Share on other sites

And more stuff follows:

Is there full documentation what stuff method: getModuleInfo() can return?

Documentation says:

	 * 1. Using a static getModuleInfo method:  
	 * ---------------------------------------
	 * 
	 * 	public static function getModuleInfo() {
	 * 		return array(
	 * 			'title' => 'Your Module Title',
	 * 			'version' => 100,
	 *			'author' => 'Ryan Cramer',
	 * 			'summary' => 'Description of what this module does and who made it.',
	 * 			'href' => 'http://www.domain.com/info/about/this/module/', 
	 * 			'singular' => false,
	 *			'autoload' => false,
	 *			'requires' => array('HelloWorld>=1.0.1', 'PHP>=5.4.1', 'ProcessWire>=2.4.1'), 
	 *			'installs' => array('Module1', 'Module2', 'Module3'),
	 * 			);
	 * 	}
while example in ProcessCommentsManager.module:
 
	public static function getModuleInfo() {
		return array(
			'title' => 'Comments', 
			'summary' => 'Manage comments in your site outside of the page editor.',
			'version' => 5, 
			'author' => 'Ryan Cramer', 
			'icon' => 'comments', 
			'requires' => 'FieldtypeComments',
			'permission' => 'comments-manager', 
			'permissions' => array(
				'comments-manager' => 'Use the comments manager', 
				),
			'page' => array(
				'name' => 'comments',
				'parent' => 'setup', 
				'title' => 'Comments', 
				),
			'nav' => array(
				array(
					'url' => '?go=approved',
					'label' => __('Approved', __FILE__),
					),
				array(
					'url' => '?go=pending',
					'label' => __('Pending', __FILE__),
					), 
				array(
					'url' => '?go=spam',
					'label' => __('Spam', __FILE__),
					),
				array(
					'url' => '?go=all',
					'label' => __('All', __FILE__),
					)
				)
			); 
	}

So are 'page' and 'nav' part of Process Module interface, and if so, where can i read about this?

Share this post


Link to post
Share on other sites
So my question: is this actually required method anymore? If not, documentation needs some update.

Technically yes, an interface forces you to implement the public methods in your class. It's like a "contract" that describes the public API of all classes implementing it. However, I just noticed that all the methods in the module interface are commented out. So you're not required to implement the init() method, if you don't need it.

Cheers

  • Like 1

Share this post


Link to post
Share on other sites

Thanks for the confirmation Wanze, this is exactly what i meant.

Cheers also.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...