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: 4 years ago
Size: 4,916 bytes


Class file image Download
#!/usr/bin/php -q
    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()

    # 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()

# 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('Lupus.xbt', $csv=true);
    $exp->RunXbert('MacularDegeneration.xbt', $csv=true);

These rule sets are also in the Master Menu and run specific examples.

These rule sets are called from other rule sets, but can be run individually.

# 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();


# 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

# 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

# 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()

# ....

# end function

# end script

For more information send a message to info at phpclasses dot org.