Другая опция иметь в виду использует, "имеет -" отношения, иначе "реализованы с точки зрения" или "состав". Иногда это - инструмент для очистки, более гибкий способ структурировать вещи, чем использование "-" наследование.
Это не может иметь столько же смысла логически, чтобы сказать, что у Собаки и CAT оба "есть" Домашнее животное, но это избегает ловушек наследования общего множителя:
public class Pet
{
void Bathe();
void Train(Trick t);
}
public class Dog
{
private Pet pet;
public void Bathe() { pet.Bathe(); }
public void Train(Trick t) { pet.Train(t); }
}
public class Cat
{
private Pet pet;
public void Bathe() { pet.Bathe(); }
public void Train(Trick t) { pet.Train(t); }
}
Да, этот пример показывает, что существует много дублирования кода и отсутствие элегантности, вовлеченной в выполнение вещей этот путь. Но нужно также ценить, что это помогает сохранить Собаку и CAT разъединенными от Любимого класса (у той Собаки, и CAT не имеют доступа к членам парламента, не занимающим официального поста Домашнего животного), и это оставляет комнату для Собаки и CAT для наследования чему-то еще - возможно класс Млекопитающего.
Состав предпочтителен, когда никакой частный доступ не требуется, и Вы не должны обращаться к Собаке и CAT с помощью универсальных Любимых ссылок/указателей. Интерфейсы дают Вам, что возможность общей ссылки и может помочь сократить многословие Вашего кода, но они могут также запутать вещи, когда они плохо организованы. Наследование полезно, когда Вам нужен доступ члена парламента, не занимающего официального поста, и в использовании его Вы фиксируете себя высокой связи Вашей Собаки и классов CAT к Вашему Любимому классу, который является крутой стоимостью для платы.
Между наследованием, состав и интерфейсы там не являются никаким путем, который является всегда правильным, и это помогает рассмотреть, как все три опции могут использоваться в гармонии. Из этих трех наследование обычно является опцией, которая должна использоваться наименее часто.
Я использовал много кодов от вышеупомянутых разделов для удаления index.php, формируют базовый URL. Но это не работало от моего конца. Так, можно использовать этот код, который я использовал и его работа правильно.
, Если действительно необходимо удалить index.php из базового URL затем просто, помещает этот код в htaccess.
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]