Bonjour.

  • La ligne 83 de l'erreur que je reçois et que j'ai mise ci-dessous est du fichier UssdNode.php qui contient la déclaration de la variable $item=$items[$i]; dans la méthode recurseMenu ci-dessous.
  • La ligne 45 de la même erreur du fichier UssdTree.php contient la déclaration de la variable $node=$this->treeMenu[$name]; dans la méthode getNode ci-dessous.
  • La ligne 94 de la même erreur du fichier UssdNode.php contient la déclaration de la variable $title=$node->getTitle(); dans la méthode recurseMenu ci-dessous.



Ma méthode ou fonction recurseMenu (UssdNode.php) contient normalement la liste des menus (QUE JE CHERCHE A AFFICHER) contenue dans la variable $title=$node->getTitle();:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function recurseMenu($items,$bufferLimit) {
		$objectString="<strong>". $this->getTitle() . "</strong>" . PHP_EOL;
		$lastMenu=false;
		if(count($items)>0) {
			for($i=$this->index;$i<$bufferLimit;$i++){
				$item=$items[$i];
 
				/* echo "<pre>";
				print_r($item);
				echo "</pre>"; */
 
				$num=$i+1;
				//get node by name
				$userSessions=$_SESSION['userSessions'];
				$currUserSession=$userSessions[$this->address];
				$node=$currUserSession->getNode($item);
				$title=$node->getTitle();
				$objectString=$objectString . PHP_EOL .$num . '. ' .$title;
			}
		} else {
			$objectString=$objectString.PHP_EOL . 'NO DATA AVAILABLE, TRY AGAIN LATER';
		}
		$lastMenu=$bufferLimit==count($items);
		$objectString=$objectString . PHP_EOL . PHP_EOL . "<strong>0. Exit</strong>";
		if($this->getParent() != '0'){
			$objectString=$objectString . PHP_EOL . "<strong>#. Back</strong>";
 
		}
		if($lastMenu===false){
			$rem=count($items)-$this->index;
			$objectString=$objectString . PHP_EOL . "<strong>99. Next (".$rem.")</strong>";
		}
		return $objectString;
	}

Méthode getNode du fichier UssdTree.php:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
function getNode($name){
		$node=$this->treeMenu[$name];
		return $node;
	}
Le problème c'est que rien ne s'affiche.

Et quand j'essaie le debug de $this->recurseMenu($items,$bufferLimit) dans ma méthode (fonction) toString qui affiche la liste des $title en chaînes de caractères:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function toString(){
		$objectString='';
		$items=$this->children;
		$bufferLimit=(count($items)==0)?1:$this->getBufferLimit()+1;
 
		echo "<pre>";
		print_r($this->recurseMenu($items,$bufferLimit));
		echo "</pre>";
 
		do{
			$bufferLimit-=1;
			$objectString=$this->recurseMenu($items,$bufferLimit);
		}while(strlen($objectString>160));
		$this->index=$bufferLimit;
		return $objectString;
	}
Je reçois l'erreur suivante:

Notice: Undefined offset: 3 in C:\laragon\www\ussd\ussdmenu-server-php\UssdNode.php on line 83



Notice: Undefined index: in C:\laragon\www\ussd\ussdmenu-server-php\UssdTree.php on line 45



Fatal error: Uncaught Error: Call to a member function getTitle() on null in C:\laragon\www\ussd\ussdmenu-server-php\UssdNode.php:94
Stack trace:
#0 C:\laragon\www\ussd\ussdmenu-server-php\UssdNode.php(59): UssdNode->recurseMenu(Array, 4)
#1 C:\laragon\www\ussd\ussdmenu-server-php\UssdUserSession.php(77): UssdNode->toString()
#2 C:\laragon\www\ussd\ussdmenu-server-php\UssdReceiver.php(51): UssdUserSession->fetchDisplay()
#3 C:\laragon\www\ussd\ussdmenu-server-php\UssdReceiver.php(43): UssdReceiver->handleChildBearingNode('paybill', '0772247408', '1234567')
#4 C:\laragon\www\ussd\ussdmenu-server-php\UssdReceiver.php(15): UssdReceiver->handleContinuingRequests('0772247408', '4', '1234567')
#5 C:\laragon\www\ussd\receiver.php(28): UssdReceiver->onMessage(Array)
#6 C:\laragon\www\ussd\receiver.php(36): MyUssdReceiver::process(Array)
#7 {main}
thrown in C:\laragon\www\ussd\ussdmenu-server-php\UssdNode.php on line 94

URL :
http://localhost/ussd/receiver.php
MSISDN :

Comment afficher correctement la liste des menus représentée par la variable $title=$node->getTitle(); dans la méthode recurseMenu ci-dessous ?

Aidez-moi à corriger cette erreur.