1
0
mirror of https://github.com/dg/dibi.git synced 2025-08-05 13:47:33 +02:00

improved dibi, Texy and Nette exceptions compatibility

This commit is contained in:
David Grudl
2008-07-12 23:11:57 +00:00
parent 41e5b32a22
commit 69ead6da56
6 changed files with 87 additions and 167 deletions

View File

@@ -23,6 +23,11 @@
/**
* Custom output for Nette::Debug.
*
* @author David Grudl
* @copyright Copyright (c) 2004, 2008 David Grudl
* @package Nette
* @version $Revision$ $Date$
*/
interface IDebuggable
{

View File

@@ -98,12 +98,12 @@ abstract class Object
*/
protected function __call($name, $args)
{
if ($name === '') {
throw new /*::*/MemberAccessException("Call to method without name.");
}
$class = get_class($this);
if ($name === '') {
throw new /*::*/MemberAccessException("Call to class '$class' method without name.");
}
// event functionality
if (self::hasEvent($class, $name)) {
$list = $this->$name;
@@ -155,17 +155,18 @@ abstract class Object
*/
protected function &__get($name)
{
$class = get_class($this);
if ($name === '') {
throw new /*::*/MemberAccessException("Cannot read an property without name.");
throw new /*::*/MemberAccessException("Cannot read an class '$class' property without name.");
}
// property getter support
$class = get_class($this);
$m = 'get' . $name;
if (self::hasAccessor($class, $m)) {
// ampersands:
// - using &__get() because declaration should be forward compatible (e.g. with Nette::Web::Html)
// - not using &$this->$m because user could bypass property setter by: $x = & $obj->property; $x = 'new value';
// - uses &__get() because declaration should be forward compatible (e.g. with Nette::Web::Html)
// - doesn't call &$this->$m because user could bypass property setter by: $x = & $obj->property; $x = 'new value';
$val = $this->$m();
return $val;
@@ -179,19 +180,20 @@ abstract class Object
/**
* Sets value of a property. Do not call directly.
*
* @param string property name
* @param mixed property value
* @param string property name
* @param mixed property value
* @return void
* @throws ::MemberAccessException if the property is not defined or is read-only
*/
protected function __set($name, $value)
{
$class = get_class($this);
if ($name === '') {
throw new /*::*/MemberAccessException('Cannot assign to an property without name.');
throw new /*::*/MemberAccessException("Cannot assign to an class '$class' property without name.");
}
// property setter support
$class = get_class($this);
if (self::hasAccessor($class, 'get' . $name)) {
$m = 'set' . $name;
if (self::hasAccessor($class, $m)) {
@@ -211,7 +213,7 @@ abstract class Object
/**
* Is property defined?
*
* @param string property name
* @param string property name
* @return bool
*/
protected function __isset($name)

View File

@@ -1,110 +0,0 @@
<?php
/**
* Nette Framework
*
* Copyright (c) 2004, 2008 David Grudl (http://davidgrudl.com)
*
* This source file is subject to the "Nette license" that is bundled
* with this package in the file license.txt.
*
* For more information please see http://nettephp.com/
*
* @copyright Copyright (c) 2004, 2008 David Grudl
* @license http://nettephp.com/license Nette license
* @link http://nettephp.com/
* @category Nette
* @package Nette
*/
/*no namespace*/
/*
some useful SPL exception:
- LogicException
- InvalidArgumentException
- LengthException
- RuntimeException
- OutOfBoundsException
- UnexpectedValueException
other SPL exceptions are ambiguous; do not use them
*/
/**
* The exception that is thrown when the value of an argument is
* outside the allowable range of values as defined by the invoked method.
*/
class ArgumentOutOfRangeException extends InvalidArgumentException
{
}
/**
* The exception that is thrown when a method call is invalid for the object's
* current state, method has been invoked at an illegal or inappropriate time.
*/
class InvalidStateException extends RuntimeException // or InvalidOperationException?
{
}
/**
* The exception that is thrown when a requested method or operation is not implemented.
*/
class NotImplementedException extends LogicException
{
}
/**
* The exception that is thrown when an invoked method is not supported. For scenarios where
* it is sometimes possible to perform the requested operation, see InvalidStateException.
*/
class NotSupportedException extends LogicException
{
}
/**
* The exception that is thrown when accessing a class member (property or method) fails.
*/
class MemberAccessException extends LogicException
{
}
/**
* The exception that is thrown when an I/O error occurs.
*/
class IOException extends RuntimeException
{
}
/**
* The exception that is thrown when accessing a file that does not exist on disk.
*/
class FileNotFoundException extends IOException
{
}
/**
* The exception that is thrown when part of a file or directory cannot be found.
*/
class DirectoryNotFoundException extends IOException
{
}

View File

@@ -30,9 +30,31 @@ if (version_compare(PHP_VERSION, '5.1.0', '<')) {
// nette libraries
/**
* Compatibility with Nette
*/
if (!class_exists('NotImplementedException', FALSE)) {
require_once dirname(__FILE__) . '/Nette/exceptions.php';
class NotImplementedException extends LogicException {}
}
if (!class_exists('NotSupportedException', FALSE)) {
class NotSupportedException extends LogicException {}
}
if (!class_exists('MemberAccessException', FALSE)) {
class MemberAccessException extends LogicException {}
}
if (!class_exists('InvalidStateException', FALSE)) {
class InvalidStateException extends RuntimeException {}
}
if (!class_exists('IOException', FALSE)) {
class IOException extends RuntimeException {}
}
if (!class_exists('FileNotFoundException', FALSE)) {
class FileNotFoundException extends IOException {}
}
if (!class_exists(/*Nette::*/'Object', FALSE)) {

View File

@@ -1,57 +1,57 @@
----------------------------------------------------------------------------------
Tento text je NEOFICI<43>LN<4C>M p<>ekladem "dibi license". Nevyjad<61>uje pr<70>vn<76> podstatu
Tento text je NEOFICI<43>LN<4C>M p<>ekladem "Dibi license". Nevyjad<61>uje pr<70>vn<76> podstatu
podm<EFBFBD>nek pro <20><><EFBFBD>en<65> tohoto softwaru - k tomuto <20><>elu slou<6F><75> v<>hradn<64> p<>vodn<64>
anglick<EFBFBD> verze licence.
----------------------------------------------------------------------------------
Dibi Licence, Verze 1
=====================
Dibi Licence, verze 1
======================
Copyright (c) 2005, 2008 David Grudl (http://davidgrudl.com)
V<EFBFBD>echna pr<70>va vyhrazena.
Tato licence je pr<70>vn<76> ujedn<64>n<EFBFBD> mezi v<>mi a Davidem Grudlem pro pot<6F>eby
pou<EFBFBD>it<EFBFBD> "dibi" (d<>le "Software"). By obtaining the Software you agree to comply
with the terms and conditions of this license.
Tato licence je pr<70>vn<76> ujedn<64>n<EFBFBD> mezi v<>mi a Davidem Grudlem (d<>le Author)
pro pot<6F>eby pou<EFBFBD>it<EFBFBD> "dibi" (d<>le "Software"). Z<EFBFBD>sk<EFBFBD>n<EFBFBD>m, pou<6F>it<69>m
a/nebo zkop<6F>rov<6F>n<EFBFBD>m Software projevujete souhlas s t<>m, <20>e jste p<>e<EFBFBD>etli,
porozum<EFBFBD>li a budete jednat v souladu s podm<64>nkami t<>to licence.
POVOLEN<EFBFBD> POU<4F>IT<49>
----------------
M<EFBFBD><EFBFBD>ete pou<6F><75>vat, kop<6F>rovat, modifikovat a distribuovat Software a jeho
dokumentaci, v p<>vodn<64>m i upravovan<61>m tvaru, k jak<61>mukoliv <20><>elu, a to
za n<EFBFBD>sleduj<EFBFBD>c<EFBFBD>ch podm<64>nek:
Je povoleno pou<6F><75>vat, kop<6F>rovat, modifikovat a distribuovat Software
a jeho dokumentaci, v p<>vodn<64>m i upravovan<61>m tvaru, pro jak<61>koliv <20><>el,
za p<EFBFBD>edpokladu, <20>e jsou spln<6C>ny tyto podm<64>nky:
1. Kopie tohoto licen<65>n<EFBFBD>ho ujedn<64>n<EFBFBD> mus<75> b<>t p<>ilo<6C>ena v distribuci.
1. Kopie t<EFBFBD>to licen<65>n<EFBFBD> smlouvy mus<75> b<>t sou<6F><75>st<73> distribuce.
2. <20><><EFBFBD>en<65> zdrojov<6F> k<>d mus<75> obsahovat v<><76>e uvedenou informaci o copyrightu
ve v<>ech souborech zdrojov<6F>ho k<>du.
2. <20><><EFBFBD>en<65> zdrojov<6F> k<>d mus<75> zachovat v<><76>e uvedenou informaci o autorsk<EFBFBD>ch
pr<EFBFBD>vech ve v<>ech souborech zdrojov<6F>ho k<>du.
3. <20><><EFBFBD>en<65> bin<69>rn<72> tvar mus<75> n<EFBFBD>st v<><76>e uvedenou informaci o copyrightu ve sv<73>
dokumentaci a/nebo dal<EFBFBD><EFBFBD>ch materi<72>lech poskytovan<61>ch s distribuc<75>.
3. <20><><EFBFBD>en<65> bin<69>rn<72> tvar mus<75> reprodukovat v<><76>e uvedenou informaci o autorsk<EFBFBD>ch
pr<EFBFBD>vech v dokumentaci a/nebo jin<EFBFBD>ch materi<72>lech poskytovan<61>ch s distribuc<75>.
4. Produkty odvozen<65> od tohoto Software mus<75> ve sv<73> dokumentaci a/nebo
dal<EFBFBD><EFBFBD>ch materi<72>lech poskytovan<61>ch s distribuc<75> obsahovat zm<7A>nku, <20>e jsou
odvozen<EFBFBD> od "dibi".
4. Produkty odvozen<65> od Software mus<75> obsahovat potvrzen<65>, <20>e jsou odvozen<65>
od "dibi", ve sv<73> dokumentaci a/nebo jin<69>ch materi<72>lech
poskytovan<EFBFBD>ch s distribuc<75>.
5. N<>zev "dibi" nesm<73> b<>t pou<6F>it p<>i podpo<70>e nebo pr<EFBFBD>vn<EFBFBD>ch aktech
souvisej<EFBFBD>c<EFBFBD>ch s produkty odvozen<EFBFBD>mi z tohoto Software bez p<>edchoz<6F>ho
p<>semn<6D>ho souhlasu Davida Grudla.
5. N<>zev "dibi" nesm<73> b<>t pou<6F>it p<>i podpo<70>e nebo propagaci produkt<6B>
odvozen<65>mi ze Software bez p<>edchoz<6F>ho p<>semn<6D>ho souhlasu Autora.
6. Produkty odvozen<65> od tohoto Software nesm<73> b<>t nazv<7A>ny "dibi",
ani se nesm<73> "dibi" objevovat v jejich n<>zvu bez p<>edchoz<6F>ho
p<>semn<6D>ho souhlasu Davida Grudla.
6. Produkty odvozen<65> od Software nesm<73> b<>t nazv<7A>ny "dibi",
ani se nesm<73> "dibi" objevit v jejich n<>zvu bez p<>edchoz<6F>ho
p<>semn<6D>ho souhlasu Autora.
INDEMNITY
---------
ZBAVEN<EFBFBD> ZODPOV<4F>DNOSTI
---------------------
You agree to indemnify and hold harmless the authors of the Software and
any contributors for any direct, indirect, incidental, or consequential
third-party claims, actions or suits, as well as any related expenses,
liabilities, damages, settlements or fees arising from your use or misuse
of the Software, or a violation of any terms of this license.
Souhlas<EFBFBD>te se zbaven<65>m zodpov<6F>dnosti a kryt<79>m Autora a p<>isp<73>vatel<65> v<><76>i
jak<EFBFBD>mkoliv p<><70>m<EFBFBD>m, nep<65><70>m<EFBFBD>m, n<>hodn<64>m nebo n<>sledn<64>m odjinud poch<63>zej<65>c<EFBFBD>m <20>kod<6F>m,
<EFBFBD>alob<EFBFBD>m nebo spor<6F>m, jako<6B> i p<>ed v<>emi souvisej<65>c<EFBFBD>mi n<>klady, z<>vazky,
od<EFBFBD>kodn<EFBFBD>n<EFBFBD>mi, <20>hradami nebo poplatky vypl<70>vaj<61>c<EFBFBD>ch z pou<6F><75>v<EFBFBD>n<EFBFBD> nebo
nespr<EFBFBD>vn<EFBFBD>ho u<>it<69> Software, nebo z poru<72>en<65> podm<64>nek t<>to licence.
Z<EFBFBD>RUKA SE NEPOSKYTUJE

View File

@@ -1,12 +1,13 @@
The Dibi License, Version 1
===========================
============================
Copyright (c) 2005, 2008 David Grudl (http://davidgrudl.com)
All rights reserved.
This license is a legal agreement between you and David Grudl for the use
of "dibi" (the "Software"). By obtaining the Software you agree to comply
with the terms and conditions of this license.
This license is a legal agreement between you and David Grudl (the "Author")
for the use of "dibi" (the "Software"). By obtaining, using and/or
copying the Software, you agree that you have read, understood, and will
comply with the terms and conditions of this license.
PERMITTED USE
@@ -28,22 +29,22 @@ the following conditions are met:
they are derived from "dibi" in their documentation and/or other
materials provided with the distribution.
5. The name "dibi" must not be used to endorse or promote products derived
from the Software without prior written permission from David Grudl.
5. The name "dibi" must not be used to endorse or promote products
derived from the Software without prior written permission from Author.
6. Products derived from the Software may not be called "dibi",
nor may "dibi" appear in their name, without prior written
permission from David Grudl.
permission from Author.
INDEMNITY
---------
You agree to indemnify and hold harmless the authors of the Software and
any contributors for any direct, indirect, incidental, or consequential
third-party claims, actions or suits, as well as any related expenses,
liabilities, damages, settlements or fees arising from your use or misuse
of the Software, or a violation of any terms of this license.
You agree to indemnify and hold harmless the Author and any contributors
for any direct, indirect, incidental, or consequential third-party claims,
actions or suits, as well as any related expenses, liabilities, damages,
settlements or fees arising from your use or misuse of the Software,
or a violation of any terms of this license.
DISCLAIMER OF WARRANTY