ФорумПрограммированиеPHP для идиотовPHP и ООП → как для функции задать входные условия

как для функции задать входные условия

  • arvitaly

    Сообщения: 292 Репутация: N Группа: Адекваты

    Spritz 24 октября 2011 г. 12:35

    Ребята, интересует реализация (может уже есть готовая)

    Есть функция-действие, как для функции задать входные условия



    //Условия выполнения, иначе исключения
    function test()
    {

    }


    Может канеш глупо описал, но если кто-нибудь поймет - классно))
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 24 октября 2011 г. 12:37, спустя 2 минуты 7 секунд

    таких приколов я еще не видел
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 24 октября 2011 г. 12:55, спустя 17 минут 59 секунд

    НИКАК БЛЕЯДЬ!!!!!!!!!! ЭТО НЕВАЗМНОЖНО!!!!!!!!!!!!!!
    Сапожник без сапог
  • arvitaly

    Сообщения: 292 Репутация: N Группа: Адекваты

    Spritz 24 октября 2011 г. 13:12, спустя 16 минут 8 секунд

    пизда рулю
    Спустя 44 сек.
    ну ващет имелось ввиду не комментариями условия перед функцией уж, а интересная реализация этого)))
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 24 октября 2011 г. 13:23, спустя 11 минут 33 секунды

    пример условия?
    не всё полезно, что в swap полезло
  • arvitaly

    Сообщения: 292 Репутация: N Группа: Адекваты

    Spritz 24 октября 2011 г. 13:40, спустя 16 минут 24 секунды

    условия задаются в виде логического выражения

    (A & 3) | (B & 4)

    т.е. по сути могут быть записаны строкой, которую кто-то должен обработать как раз таки
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 24 октября 2011 г. 15:00, спустя 1 час 20 минут 3 секунды

    (A & 3) | (B & 4)

    и что это значит?
    не всё полезно, что в swap полезло
  • arvitaly

    Сообщения: 292 Репутация: N Группа: Адекваты

    Spritz 24 октября 2011 г. 15:01, спустя 59 секунд

    Функция A и true или Функция B и true
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 24 октября 2011 г. 15:09, спустя 8 минут 44 секунды

    Отвечает Александр Друзь
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 24 октября 2011 г. 17:15, спустя 2 часа 5 минут 44 секунды

    Функция A и true или Функция B и true

    какие ещё функция A и B?
    не всё полезно, что в swap полезло
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 24 октября 2011 г. 19:53, спустя 2 часа 38 минут 6 секунд

    блеядь уколите еще!
    Сапожник без сапог
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 25 октября 2011 г. 16:25, спустя 20 часов 31 минуту 23 секунды

    arvitaly, ты имеешь ввиду программирование по контракту.

    Например, в .NET/C# есть следующее:

    using System;
    using System.Diagnostics.Contracts;

    // An IArray is an ordered collection of objects.
    [ContractClass(typeof(IArrayContract))]
    public interface IArray
    {
    // The Item property provides methods to read and edit entries in the array.
    Object this[int index]
    {
    get;
    set;
    }

    int Count
    {
    get;

    }

    // Adds an item to the list.
    // The return value is the position the new element was inserted in.
    int Add(Object value);

    // Removes all items from the list.
    void Clear();

    // Inserts value into the array at position index.
    // index must be non-negative and less than or equal to the
    // number of elements in the array. If index equals the number
    // of items in the array, then value is appended to the end.
    void Insert(int index, Object value);


    // Removes the item at position index.
    void RemoveAt(int index);
    }

    [ContractClassFor(typeof(IArray))]
    internal abstract class IArrayContract : IArray
    {
    int IArray.Add(Object value)
    {
    // Returns the index in which an item was inserted.
    Contract.Ensures(Contract.Result<int>() >= -1);
    Contract.Ensures(Contract.Result<int>() < ((IArray)this).Count);
    return default(int);
    }
    Object IArray.this[int index]
    {
    get
    {
    Contract.Requires(index >= 0);
    Contract.Requires(index < ((IArray)this).Count);
    return default(int);
    }
    set
    {
    Contract.Requires(index >= 0);
    Contract.Requires(index < ((IArray)this).Count);
    }
    }
    public int Count
    {
    get
    {
    Contract.Requires(Count >= 0);
    Contract.Requires(Count <= ((IArray)this).Count);
    return default(int);
    }
    }

    void IArray.Clear()
    {
    Contract.Ensures(((IArray)this).Count == 0);
    }

    void IArray.Insert(int index, Object value)
    {
    Contract.Requires(index >= 0);
    Contract.Requires(index <= ((IArray)this).Count); // For inserting immediately after the end.
    Contract.Ensures(((IArray)this).Count == Contract.OldValue(((IArray)this).Count) + 1);
    }

    void IArray.RemoveAt(int index)
    {
    Contract.Requires(index >= 0);
    Contract.Requires(index < ((IArray)this).Count);
    Contract.Ensures(((IArray)this).Count == Contract.OldValue(((IArray)this).Count) - 1);
    }
    }


    Пример взят с MSDN. Ты хочешь тоже самое только на PHP? Или что?
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 25 октября 2011 г. 18:42, спустя 2 часа 17 минут 55 секунд

    [man]assert[/man]
    ιιlllιlllι унц-унц
  • arvitaly

    Сообщения: 292 Репутация: N Группа: Адекваты

    Spritz 25 октября 2011 г. 20:21, спустя 1 час 38 минут 16 секунд

    krasun, да, я думаю, то что нужно - большое спасибо, если есть реализация на PHP (пока я сам не успел)))) будет классно!!

Пожалуйста, авторизуйтесь, чтобы написать комментарий!