blob: d00d0834cad588901074dcadfefd7ff2e816f998 [file] [log] [blame]
<?php
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. The ASF licenses this file to You
* under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
require_once 'PHPCR/Property.php';
require_once 'PHPCR/Node.php';
require_once 'PHPCR/RepositoryException.php';
/**
* The <code>ItemVisitor</code> defines an interface for the
* <i>Visitor</i> design pattern (see, for example, <i>Design Patterns</i>,
* Gamma <i>et al.</i>, 1995).
* This interface defines two signatures of the
* <code>visit</code> method; one taking a <code>Node</code>, the other a
* <code>Property</code>. When an object implementing this interface is passed
* to <code>Item#accept(ItemVisitor visitor)</code> the appropriate
* <code>visit</code> method is automatically called, depending on whether the
* <code>Item</code> in question is a <code>Node</code> or a
* <code>Property</code>. Different implementations of this interface can be
* written for different purposes. It is, for example, possible for the
* <code>visit(Node node)</code> method to call <code>accept</code> on the
* children of the passed node and thus recurse through the tree performing some
* operation on each <code>Item</code>.
*
* @author Markus Nix <mnix@mayflower.de>
* @package phpcr
*/
interface ItemVisitor
{
/**
* This method is called when the <code>ItemVisitor</code> is
* passed to the <code>accept</code> method of a <code>Property</code>.
* If this method throws an exception the visiting process is aborted.
*
* @param property The <code>Property</code> or <code>Node</code> that is accepting this visitor.
*
* @throws RepositoryException if an error occurrs
*/
public function visit( $entry );
}
?>