Sample Call

<?php
// SOAP_CLIENT_BASEDIR - folder that contains the PHP Toolkit and your WSDL
// $USERNAME - variable that contains your Salesforce.com username (must be in the form of an email)
// $PASSWORD - variable that contains your Salesforce.ocm password

define("SOAP_CLIENT_BASEDIR", "../../soapclient");
require_once (SOAP_CLIENT_BASEDIR.'/SforcePartnerClient.php');
require_once (SOAP_CLIENT_BASEDIR.'/SforceMetadataClient.php');

try {
  $mySforceConnection = new SforcePartnerClient();
  $mySoapClient = $mySforceConnection->createConnection(SOAP_CLIENT_BASEDIR.'/partner.wsdl.xml');
  $loginResult = $mySforceConnection->login($USERNAME, $PASSWORD);

  $myMetadataConnection = new SforceMetadataClient(SOAP_CLIENT_BASEDIR.'/metadata.wsdl.xml', $loginResult, $mySforceConnection);

  $customObject = new SforceCustomObject();
  $customObject->fullName = 'CustomObjFromPHP__c';
  $customObject->deploymentStatus = DEPLOYMENT_STATUS_DEPLOYED;

  $customObject->setDescription("A description");
  $customObject->setEnableActivities(true);
  $customObject->setEnableDivisions(false);
  $customObject->setEnableHistory(true);
  $customObject->setEnableReports(true);
  $customObject->setHousehold(false);
  $customObject->setLabel("My Custom Obj from PHP");
  $customField = new SforceCustomField();
  $customField->setFullName('MyCustomFieldb__c');
  $customField->setDescription('Description of New Field');
  $customField->setLabel('My Custom Field Label');
  $customField->setType('Text');

  $customObject->nameField = $customField;

  $customObject->pluralLabel = 'My Custom Objs from PHP';
  $customObject->sharingModel = SHARING_MODEL_READWRITE;

  print_r($myMetadataConnection->create($customObject));

} catch (Exception $e) {
  echo $myMetadataConnection->getLastRequest();
  echo $e->faultstring;
}
?>

Sample Output

stdClass Object
(
    [result] => stdClass Object
        (
            [done] =>
            [id] => 04s500000004ED7AAM
            [secondsToWait] => 2
            [state] => InProgress
        )

)