return SpoppedValue;
)
}
function peek()
I
if ($thiS->isEmpty()) f return -1;
} else {
retu ГП $this->vecto r[$this->stackPointe r];
}
function reset ()
$this->stackPointer = 0; $this->vector[$this->stackPointer] = -1;
I
}
?>
Если сохранить этот сценарий в файле с именем Stack.php, то другой сценарий, использующий эту реализацию стека, может выглядеть так:
<?php
//HyStack. php require(". /Stack.php"); SmyStack = new StackO; echo("<h2>myStack operations</h2>"); echo( "Popping before a push <br>"); SpoppedValue = $myStack->pop(); value:
echo( "Peeking before a push <br>"); ■ SpeekedValue = $myStack->peek(); echo( "Peeking: SpeekedValue <br><br>");
echo("Pushing 3 values into the stack<br><br>"); for ($i = 1; $i <= 3; ++$i) { SmyStack->push($i);
}
echo( "Peeking at: the first value: "); SpeekedValue = $myStack->peek(); echo("SpeekedValue <br><br>");
echo("Popping values riow<br>"); for ($i = 1; $i <= 3; ++$i) {
SpoppedValue = SmyStack->pop(); echo( "Popped value: SpoppedValue <br>");
}
$ myStac; k->reset();
Этот сценарий пытается использовать реализацию стека в Stack, php, выполняя все операции, определенные в объекте Stack. Результат его работы должен выглядеть так, как на рис. 6.2.
Теперь добавим в Stack, php некоторые средства трассировки и назовем полученный сценарий Stackl.php. Необходимо включить файл phpcodesite. php в начало сценария.
<?php
//Stack"!, php
requireO'phpcodesite. php"); CS_SetEnabled(TRUE);
class Stack {
var $vector; var $stackPointer;
function Stack () {
CS_EnterMethod("Stack"); CS_SendNote( "Initializing Stack<br>"); $this->stackPointer = 0; $this->vector[0] = -1; CS_ExitMethod("Stack");
}
function isEmptyO
{
CS_EnterMethod("isEmpty"); if ($this->stackPointer <= 0){ CS_ExitMethod("isEmpty"); return } else {
CS_ExitMethod("isEmpty");
return 0;
)
?>
)
function push(Selement) {
CS_EnterMethod("push"); ,
++$this->stackPointer;
$this->vector[$this->stackPointer] = Selement; CS
}
function pop() {
CS_EnterMethod("pop"); if ($this->isEmpty()) {
CS_SendError( "Stack empty<br>"); CS_ExitMethod("pop");
return -1; } else {
$ret = $this->vectorC$this->stackPointer]; --$this->stackPointer;