Как стать автором
Обновить
0
0
neiroman @neiroman

Пользователь

Отправить сообщение
Да, рассматривать в данном случае язык отдельно от библиотек не имеет смысла.
Цифры - тут http://dada.perl.it/shootout/craps.html
Ок, доп. условие, которое я уже озвучивал не один раз - покажите КАЧЕСТВЕННЫЕ и сравнимые по функционалу библиотеками для явы.
Клепают под пхп. Под яву разрабатывают. Бесплатно. Практически все.
Безопасность - во всем. Сколько было сообщений о дырах в ядре пхп ? А сколько в JVM и фреймверках ? Вот...
Я не делаю из явы краеугольный камень, о питоне, к сожалению, ничего не могу сказать. Но я ненавижу пхп за кривость во всем - начинаная ядром и заканчивая прикладными рюшечками.
Производительность и масштабируемость - мощнейшие и сложнейшие системы обработки данных (банки/биржи/прочее) построены на яве/нете, но не на пхп.
Сделайте на пхп объект, который может мигрировать в кластере.
Да, реализуемо. Дайте ссылку на реализацию.
Hibernate учитывает диалекты баз и выполняет запросы максимально эффективным образом.
Покажите что-то типа Axis2,Hibernate, JAAS,EJB, Castor.
Мда, а что делать с дырами в ядре пхп ? Изучать десятки метров сишного кода ?
Что неудобного в валидаторах ? Почему на пхп один и тот же код по сути нужно писать постоянно ? Мне гораздо удобнее добавить стандартный валидатор или набросать свой.
Какой такой контроль ? Над отправкой логина на сервер ?

Рассматривать язык и сопутствующие библиотеки в данном контексте не имеет смысла. Это не вещь в себе.
она так и выглядит:






Invalid email address
Empty password





Email



First name



Second name



Password



Confirm password  












регистрация пользователя, вывод сообщений об ошибках, возможность наследования и др.
Хотя это не самый удачный пример - мало динамики. Вот получше:














весь код для страницы, панели добавляются на сервере в замисимости от текущих условий.
Гм, кому элементарный, а кто не может разобраться....
Да и вобщем-то дело не в этом куске кода, а в том, что пхп - худший выбор для написания проекта, особенно с большой нагрузкой.
Объясняю по пунктам
1.Писал и на том, и на том. И дело тут в технологических преимуществах, а не в соплях. Покажите для пхп что-то уровня Hibernate.
2.Надоело - не читайте.
3. Код отформатирован по всем стандартам.
4. Не хотите, не разбирайтесь. Хотя там все прокоменнтировано.

Преимущества:
1. Отображение классов на структуру базы данных.
2. Реальная независимость от конкретной базы данных.
3. Масштабируемость.
4. Гораздо более низкое использование ресурсов.
5. Вагоны библиотек.
6. Бесплатные среды, фреймверки, мощное сообщество, поддержка крупнейшими производителями ПО.
7. Безопасность.
8. Стандартицазия, наличие выработанных технологий для решения определенных проблем.

Касательно куска кода:
В html код включаютя только идентификаторы, больше ничего. Вся логика выполняется в классах, которые наследуются от абстрактной страницы.
Наличие различных валидаторов полей форм (как встроенных, так и пользовательских).
Концепция модели для обмена данными с элементами пользовательского интерфейса (например, при вводе пароля и логина соотв. значения автоматически становятся доступны в соотв. свойствах модели).
PHP - это не вчерашний, это позавчерашний день.
Глядя на модель ООП, на средства разработки, на документацию у меня возникает только один вопрос - "Как на этом можно вообще писать ?"
Сравните, например, код на яве с кодом, приведенным выше:


public class RegisterPanel extends Panel {

private String email;
private String firstName;
private String secondName;
private String password;
private String passwordConfirmation;

public RegisterPanel(String name, IModel model) {
super(name, model);

add(HeaderContributor.forCss("html/style/stylesheet.css"));
Form registrationForm = new RegistrationForm("registrationForm", new Model(""));

FeedbackPanel feedback = new FeedbackPanel("registerFeedback");
feedback.setFilter(new ContainerFeedbackMessageFilter(registrationForm));

// создание элементов формы
TextField email = new TextField("email", new PropertyModel(this, "email"));
TextField firstName = new TextField("firstName", new PropertyModel(this, "firstName"));
TextField secondName = new TextField("secondName", new PropertyModel(this, "secondName"));


PasswordTextField password = new PasswordTextField("password", new PropertyModel(this, "password"));
PasswordTextField passwordConfirmation = new PasswordTextField("passwordConfirmation", new PropertyModel(this, "passwordConfirmation"));

// добавление валидаторов
password.add(StringValidator.minimumLength(6));
registrationForm.add(new EqualPasswordInputValidator(password, passwordConfirmation));
email.setRequired(true);
email.add(EmailAddressPatternValidator.getInstance());
email.add(new UniqueEmailValidator());

// добавление элементов к панели
add(feedback);
add(registrationForm);
registrationForm.add(email);
registrationForm.add(firstName);
registrationForm.add(secondName);
registrationForm.add(password);
registrationForm.add(passwordConfirmation);

// PropertyConfigurator.configure("/home/neiroman/projects/Nevilon Services/Sync/src/com/nevilon/services/sync/web/log4j.properties");



}

public String getPasswordConfirmation() {
return passwordConfirmation;
}

public void setPasswordConfirmation(String passwordConfirmation) {
this.passwordConfirmation = passwordConfirmation;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getSecondName() {
return secondName;
}

public void setSecondName(String secondName) {
this.secondName = secondName;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

class RegistrationForm extends Form {

public RegistrationForm(String id, IModel model) {
super(id, model);
}

@Override
public void onSubmit() {
Account newAccount = new Account();
newAccount.setEmail(email);
newAccount.setFirstName(firstName);
newAccount.setSecondName(secondName);
newAccount.setPassword(password);

RegistrationMailMessage regMessage = new RegistrationMailMessage(newAccount);


AccountManager accountManager = AccountManager.getInstance();
accountManager.saveAccount(newAccount);


}
}
}

Информация

В рейтинге
Не участвует
Зарегистрирован