2012-08-06 3 views
1

나는 모든 것을 서버 측에서 잘 작동하지만 설치시이 에러를 보였을 때joomla 2.5 안녕하세요 세계 모듈 개발

자습서를 복사하여 복사하고 붙여 넣은 This을 읽으므로 Joomla 2.5 모듈 개발에 새로운 내용입니다.

1) 엄격한 기준 : modUserDataHelper :: GetData의()는 C의 정적 호출하면 안 비 정적 방법 \ XAMPP \ htdocs를 \ 줌라 \ 모듈 \ mod_userdata \ mod_userdata.php 라인 (16)

2)에 엄격한 표준 : 변수는 C : \ xampp \ htdocs \ joomla \ modules \ mod_userdata \ helper.php에서 참조 용으로 할당해야합니다.

내 코드에 어떤 문제가 있는지 말해 줄 수 있습니까?

파일 :

mod_userdata.xml 
mod_userdata.php 
helper.php 
index.html 
tmpl/default.php 
tmpl/index.html 

mod_userdata.xml

<?xml version="1.0" encoding="UTF-8"?> 
<extension type="module" version="1.7" client="site" method="upgrade"> 
<name>User Data Module</name> 
<author>Minitek.gr</author> 
<creationDate>03/08/2011</creationDate> 
<copyright>Copyright (C) 2011. All rights reserved.</copyright> 
<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license> 
<authorEmail>your_email</authorEmail> 
<authorUrl>www.minitek.gr</authorUrl> 
<version>1.7.1</version> 
<description>Users Data Module</description> 
<languages> 
</languages> 
<files> 
    <filename module="mod_userdata">mod_userdata.php</filename> 
    <filename>mod_userdata.xml</filename> 
    <filename>helper.php</filename> 
    <filename>index.html</filename> 
    <folder>tmpl</folder> 
</files> 
<config> 
    <fields name="params"> 
    <fieldset name="basic"> 
    <field name="moduleclass_sfx" type="text" default="" label="Module Class Suffix" description="Suffix for individual css styling" /> 
    <field name="limit" type="text" default="10" label="Limit Displayed Users" description="Limit Displayed Users" /> 
    <field name="user_id" type="radio" default="1" label="Display user ID" description="Display user ID"> 
    <option value="0">JNO</option> 
    <option value="1">JYES</option> 
    </field> 
    <field name="user_name" type="radio" default="1" label="Display Name" description="Display Name"> 
    <option value="0">JNO</option> 
    <option value="1">JYES</option> 
    </field> 
    <field name="user_username" type="radio" default="1" label="Display Username" description="Display Username"> 
    <option value="0">JNO</option> 
    <option value="1">JYES</option> 
    </field> 
    </fieldset> 
    </fields> 
</config> 
</extension> 

mod_userdata.php

<?php 
/** 
* @package Joomla.Site 
* @subpackage mod_userdata 
* @copyright Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved. 
* @license GNU General Public License version 2 or later; see LICENSE.txt 
*/ 

// no direct access 
defined('_JEXEC') or die; 

// Include the syndicate functions only once 
require_once dirname(__FILE__).'/helper.php'; 

// Get the user data 
$list = modUserDataHelper::getData($params); // <-- ERROR IS HERE!!! 

// Get the layout 
require JModuleHelper::getLayoutPath('mod_userdata', $params->get('layout', 'default')); 

helper.php

<?php 
/** 
* @package  Joomla.Site 
* @subpackage mod_userdata 
* @copyright Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved. 
* @license  GNU General Public License version 2 or later; see LICENSE.txt 
*/ 

// no direct access 
defined('_JEXEC') or die; 

class modUserDataHelper 
{ 
    function getData(&$params) 
    { 

    // Database query   
    $list = array();   
    $query = " SELECT id, name, username "    
    ." FROM #__users " 
    ." WHERE block=0 "    
    ." ORDER BY id DESC " 
    ." LIMIT " . $params->get('limit');     
    $db =& JFactory::getDBO(); // <-- ERROR IS HERE!!! 
    $db->setQuery($query);  
    $rows = $db->loadObjectList(); 

    // Get list items 
    if ($rows!=null) 
    { 
    $i=0; 
    foreach ($rows as $row) 
    {    
    $list["users"][$i]["id"]=$row->id; 
    $list["users"][$i]["name"]=$row->name; 
    $list["users"][$i]["username"]=$row->username; 
    $i++;  
    } 
    return $list; 
    } 

    } 
} 

tmpl/default.php

<?php 
/** 
* @package  Joomla.Site 
* @subpackage mod_userdata 
* @copyright Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved. 
* @license  GNU General Public License version 2 or later; see LICENSE.txt 
*/ 

// no direct access 
defined('_JEXEC') or die; ?> 

<div class="moduletable<?php echo $params->get('moduleclass_sfx') ?>"> 

<ul> 
    <?php for ($i=0;$i< sizeof($list["users"]); $i++) { ?>  

    <li> 
     <?php if ($params->get('user_id')) { ?> 
     <span><?php echo $list["users"][$i]["id"];?></span> 
     <?php } ?> 
     <?php if ($params->get('user_name')) { ?> 
     <span><?php echo $list["users"][$i]["name"];?></span> 
     <?php } ?> 
     <?php if ($params->get('user_username')) { ?> 
     <span><?php echo $list["users"][$i]["username"];?></span> 
     <?php } ?> 
    </li> 

    <?php } ?> 
</ul> 

</div> 
+0

"엄격한 표준"이 설정되어있어 5.4가 아닌 PHP 5.3 용으로 작성된 코드로 인해 오류가 발생합니다. 객체가 인스턴스화되거나 참조 ('new MyClass'와 반대되는'새로운 MyClass')에 의해 할당되고'static '으로 정의되지 않은'modUserDataHelper :: getData()'가 마치' 정적 '이다. – Matt

+0

등 어떻게해야할까요? 내 PHP 버전에서 작동하도록 만들 수 없으며, 무엇을 변경해야합니까? – Irakli

+0

할 수있는 일은 엄격한 기준 (깔개 아래 청소 먼지와 동등한 코드)을 끄거나 나쁜 코드를 수정하는 것입니다. 이 경우,'modUserDataHelper :: getData()'호출은 나쁜 형식이다. 정적 인 컨텍스트가 아니라 인스턴스화 된 객체에서 호출해야합니다. 그것의 인스턴스 ('$ tempObj' 또는 이와 비슷한 것)를 만든 다음 그 객체 ('$ tempObj-> getData();')에서 메소드를 호출하십시오. – Matt

답변

3

당신은 "엄격한 기준"이되는 코드가 (가능성이) PHP는 5.3보다는 5.4 용으로 작성되기 때문에 약간의 오차가 던지고되어 있습니다. 개체가 인스턴스화되었거나 참조 (new MyClass이 아닌 &new MyClass) 및 modUserDataHelper::getData()에 의해 할당되는 것처럼 보이는데, 정적으로 정의되지 않은 것은 static 인 것처럼 호출됩니다.

할 수있는 일은 엄격한 기준 (러그 밑에있는 먼지를 닦는 코드와 동일)을 끄거나 잘못된 코드를 수정하는 것입니다. 이 경우 modUserDataHelper::getData()으로 전화하는 것은 나쁜 형태입니다. 정적 컨텍스트가 아닌 인스턴스화 된 객체에서 호출해야합니다. 그 인스턴스 ($tempObj 또는 그와 비슷한 것)를 만든 다음 해당 객체 ($tempObj->getData();)에서 메소드를 호출하십시오.