You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.2 KiB
PHTML
92 lines
2.2 KiB
PHTML
5 years ago
|
<?php
|
||
|
/**
|
||
|
* Examples for how to use CFPropertyList
|
||
|
* Create the PropertyList sample.xml.plist by using {@link CFTypeDetector}.
|
||
|
* @package plist
|
||
|
* @subpackage plist.examples
|
||
|
*/
|
||
|
namespace CFPropertyList;
|
||
|
|
||
|
// just in case...
|
||
|
error_reporting( E_ALL );
|
||
|
ini_set( 'display_errors', 'on' );
|
||
|
|
||
|
/**
|
||
|
* Require CFPropertyList
|
||
|
*/
|
||
|
require_once(__DIR__.'/../classes/CFPropertyList/CFPropertyList.php');
|
||
|
|
||
|
class DemoDetector extends CFTypeDetector {
|
||
|
|
||
|
public function toCFType($value) {
|
||
|
if( $value instanceof PListException ) {
|
||
|
return new CFString( $value->getMessage() );
|
||
|
}
|
||
|
|
||
|
return parent::toCFType($value);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* import the array structure to create the sample.xml.plist
|
||
|
* We make use of CFTypeDetector, which truly is not almighty!
|
||
|
*/
|
||
|
|
||
|
$stack = new \SplStack();
|
||
|
$stack[] = 1;
|
||
|
$stack[] = 2;
|
||
|
$stack[] = 3;
|
||
|
|
||
|
$structure = array(
|
||
|
'NullValueTest' => null,
|
||
|
'IteratorTest' => $stack,
|
||
|
'ObjectTest' => new PListException('Just a test...'),
|
||
|
);
|
||
|
|
||
|
/*
|
||
|
* Try default detection
|
||
|
*/
|
||
|
try {
|
||
|
$plist = new CFPropertyList();
|
||
|
$td = new CFTypeDetector();
|
||
|
$guessedStructure = $td->toCFType( $structure );
|
||
|
$plist->add( $guessedStructure );
|
||
|
$plist->saveXML( __DIR__.'/example-create-04.xml.plist' );
|
||
|
$plist->saveBinary( __DIR__.'/example-create-04.binary.plist' );
|
||
|
}
|
||
|
catch( PListException $e ) {
|
||
|
echo 'Normal detection: ', $e->getMessage(), "\n";
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* Try detection by omitting exceptions
|
||
|
*/
|
||
|
try {
|
||
|
$plist = new CFPropertyList();
|
||
|
$td = new CFTypeDetector( array('suppressExceptions' => true) );
|
||
|
$guessedStructure = $td->toCFType( $structure );
|
||
|
$plist->add( $guessedStructure );
|
||
|
$plist->saveXML( __DIR__.'/example-create-04.xml.plist' );
|
||
|
$plist->saveBinary( __DIR__.'/example-create-04.binary.plist' );
|
||
|
}
|
||
|
catch( PListException $e ) {
|
||
|
echo 'Silent detection: ', $e->getMessage(), "\n";
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* Try detection with an extended version of CFTypeDetector
|
||
|
*/
|
||
|
try {
|
||
|
$plist = new CFPropertyList();
|
||
|
$td = new DemoDetector();
|
||
|
$guessedStructure = $td->toCFType( $structure );
|
||
|
$plist->add( $guessedStructure );
|
||
|
$plist->saveXML( __DIR__.'/example-create-04.xml.plist' );
|
||
|
$plist->saveBinary( __DIR__.'/example-create-04.binary.plist' );
|
||
|
}
|
||
|
catch( PListException $e ) {
|
||
|
echo 'User defined detection: ', $e->getMessage(), "\n";
|
||
|
}
|
||
|
|
||
|
?>
|