PHP Classes

File: XbertClassDemo.php

Recommend this page to a friend!
  Classes of Bob Wedwick   PHP Expert System Engine   XbertClassDemo.php   Download  
File: XbertClassDemo.php
Role: Example script
Content type: text/plain
Description: Xbert class
Class: PHP Expert System Engine
Ask questions and make decisions based on answers
Author: By
Last change:
Date: 7 years ago
Size: 4,916 bytes
 

Contents

Class file image Download
#!/usr/bin/php -q
<?php
/*
    Author: Bob Wedwick
    USE: php XbertClassDemo.php

    5/15/2017 - demonstrating XbertClass.php

*/

    # require the expert class
   
require_once "XbertClass.php";

   
# create a new Xbert object
   
$exp = new Xbert;

/*
    # if planning to access mySql tables
    # connect to the database now

    # notify Xbert of the connection - $exp->DbConnection()
    $exp->DbConnection($dbconnection);

    # Run a rule set from a table. Be sure to set $csv to false. $exp->RunXbert()
    $exp->RunXbert('YourRuleSet', $csv=false);
*/
    # try -- exceptions may be used in any rule set
   
try {

       
# run expert with the csv rule set - $exp->RunXbert()
       
$exp->RunXbert('MasterMenu.xbt');

   
# when any exception is caught
   
} catch (Exception $e) {

       
# echo the exception error message
       
echo "Caught exception: {$e->getMessage()} \r\n";

       
# do whatever else like sending an email.

        # end exception
   
}

/*
Open any of these files with a text editor to see the variations
in how they were created.

These are most interesting and are in the Master Menu
    $exp->RunXbert('ButtermilkPancakes.xbt');
    $exp->RunXbert('Lupus.xbt', $csv=true);
    $exp->RunXbert('MacularDegeneration.xbt', $csv=true);
    $exp->RunXbert('Matematiko.lerta');

These rule sets are also in the Master Menu and run specific examples.
    $exp->RunXbert('Comments.xbt');
    $exp->RunXbert('FlowControlTest.xbt');
    $exp->RunXbert('Nodes.xbt');
    $exp->RunXbert('Math.xbt');
    $exp->RunXbert('OpenTest.xbt');
    $exp->RunXbert('SetVars.kno');
    $exp->RunXbert('SymbolicLevel.xbt');
    $exp->RunXbert('TraceFile.xbt');
    $exp->RunXbert('Variables.xbt');
    $exp->RunXbert('Vars.kno');
    $exp->RunXbert('VarsA.kno');
    $exp->RunXbert('Weather.know');
    $exp->RunXbert('YesNoTest.xbt');

These rule sets are called from other rule sets, but can be run individually.
    $exp->RunXbert('BP_CookPancakes.xbt');
    $exp->RunXbert('LupusCause.xbt');
    $exp->RunXbert('MathASMD.xbt');
    $exp->RunXbert('MathMaxMin.xbt');
    $exp->RunXbert('MD_Disclaimer.xbt');
    $exp->RunXbert('MD_NoSeeDr.xbt');
    $exp->RunXbert('MD_SeeDr.xbt');
    $exp->RunXbert('OpenTest2.xbt');
    $exp->RunXbert('OpenTest3.xbt');
    $exp->RunXbert('SetVars2.kno');
*/

# end main

### UserCall - optional function called from a rule set
function UserCall($msg) {
   
# globals
   
global $exp;

   
# designer can use the message to decide what to do.

    # examples include putting a message in the conclusion, changing databases,
    # changing directories, retrieving CSV rule sets from the internet...

# end function
}

### UserDebug() - user debug interface called from a rule set
function UserDebug($msg) {
   
# globals
   
global $exp;

   
# an example of what can be done.
    # get the value of control values or arrays
   
$a = $exp->RuleSetControlValue('abortWord');
   
$m = $exp->userMessage;
   
$d = $exp->RuleSetNumber();

   
print_r($exp->ruleSetControl[$d]);

   
# send the message to the user interface - UserInterface()
   
UserInterface( "\r\n---Debug Messages---\r\n$msg\r\n u.m. $m\r\n* / * / *\r\n\r\n");

   
# return
   
return;

# end function
}

### UserDebugA() - alternate user debug interface with the function name of your choice
function UserDebugA($msg) {
   
# globals
   
global $exp;

   
# an example of what can be done.
    # get the value of control values or arrays
   
$a =$exp->RuleSetControlValue('nodeId');
   
$c = $exp->RuleSetControlValue('command');
   
$n = $exp->RuleSetControlValue('currentNode');

   
# send the message to the user interface - UserInterface()
   
UserInterface( "\r\n---Debug Message---\r\n$msg\current level is $n, nNode ID is $a, \r\n"
       
." command is $c\r\n-----\r\n\r\n");

   
# return
   
return;

# end function
}

### UserInterface() - communication with the expert engine via console
function UserInterface($msg) {

/* if a different user interface is to be used, it is coded
    either here or in an alternate interface function.
    For example the interface can be with a browser,
    web page, or another program.
*/

    # display the message from Xbert
   
echo "$msg";

   
# get user response
   
$reply = fgets(STDIN);
   
$reply = trim($reply);

   
# return the response
   
return $reply;

# end function
}

### Finalize() - called, if exists, whenall rule sets are finished.
function Finalize() {

   
# globals
   
global $exp;

   
# var for any messages
   
$say = '';

   
# if there is a conclusion - $exp->Conclusion()
   
if ($msg = $exp->Conclusion()) {

       
# add it to what to say
       
$say .= "CONCLUSION: \r\n$msg\r\n";
   
# ....
   
}

   
# if there is a summary message - $exp->SummaryMessage()
   
if ($msg = $exp->SummaryMessage()) {

       
#add to what to say
       
$say .= "SUMMARY: \r\n$msg";

   
# ....
   
}

   
# if anything to say
   
if ($say) {

       
# send it to the user interface - UserInterface()
       
UserInterface($say);

   
# ....
   
}

# end function
}

# end script
?>