2014-07-24 1 views
-1

Fatal error: Using $this when not in object context in plugins/newsarticles/controller/NewsArticleController.php on line 29

Je peux voir où il est erroring, la ligne 29 est cette ligne:

$sqlFetch = $this->model->getAllNewsArticlesByDate(); 

Ci-dessous j'ai soumis mon code, quelqu'un peut-il jeter tout lumière à ce sujet?

<?php 
require_once("plugins/newsarticles/model/NewsArticleDB.php"); 
class NewsArticleController 
{ 
    private $model; 

    public function __construct() 
    { 
     $this->model = new NewsArticleDB(); 
    } //end constructor 

     /** 
    *Grab all the News Articles using the function 
    *Filter by date 
    *return the most recent 10 
    */ 
    function newsArticleHome() 
    { 
     //Grab the News Articles by date 
     $sqlFetch = $this->model->getAllNewsArticlesByDate(); 
     foreach ($sqlFetch as $row) 
     { 

      //Insert posts into an object array 
      $objNewsArticle[] = new NewsArticle($row['newsId'],$row['newsTitle'], $row['newsPreview'], $row['newsDisplayPicture'], $row['newsContet']." ".$row['newsCategories'], $row['newsSubmissionDate']); 
     } 

     //Count the array incase it's less than 10 posts 
     //If it's more than 10, then set to 10, if it's less then set to x 
     if(count($objNewsArticle) > 10) 
     { 
      $tempObjectCount = 10; 
     } 
     else 
     { 
      $tempObjectCount = count($objNewsArticle); 
     } 
     //Store them in an array for output 
     for($tempLoopNumber = 0; $tempLoopNumber<$tempObjectCount; $tempLoopNumber++) 
     { 
      $recentNewsArticles[$tempLoopNumber] = $objNewsArticle[$tempLoopNumber]; 
     } 
     return $recentNewsArticles; 
    } 

    function newsArticleId($id) 
    { 
     //Grab the Posts by date 
     $sqlFetch = $this->model->getAllNewsArticlesByDate(); 
       $tempOptions = $sqlFetch->fetchAll(); 
     $tempOpNumber = count($tempOptions); 


     for($tempNewsArticleNumber = 0; $tempNewsArticleNumber<$tempOpNumber; $tempNewsArticleNumber++) 
     { 
      if($tempOptions[$tempNewsArticleNumber]['newsId'] == $id) 
      { 

       $singlePost = $tempOptions[$tempNewsArticleNumber]; 
      } 
     } 
     return $singlePost; 
    } 

} //end class 
?> 

Je fais appel depuis un autre fichier nommé testing:

include_once("plugins/newsarticles/controller/NewsArticleController.php"); 
echo "out"; 
echo NewsArticleController::newsArticleHome(); 
+2

Comment appelez-vous * cette fonction? –

+0

Oh désolé lol, j'aurais probablement dû ajouter cela. C'est dans un autre fichier nommé testing Ci-dessous se trouvent les autres fichiers contenus complets include_once ("plugins/newsarticles/controller/NewsArticleController.php"); echo "out"; echo NewsArticleController :: newsArticleHome(); –

+0

voilà. vous l'appelez comme une méthode statique. les méthodes statiques n'ont pas de '$ this'. vous ne pouvez utiliser que les appels de type '$ obj-> method()' si vous voulez utiliser '$ this'. –

Répondre

2

NewsArticleController::newsArticleHome(); appelle la fonction comme si elle était une fonction statique. Vous devez plutôt créer une instance de la classe.

$nacont = new NewsArticleController(); 
$nacont->newsArticleHome(); 
Questions connexes