Когда нужно использовать ссылку проекта, настроенную против двоичной ссылки?

Проверяйте имя отправленного параметра, например isset ($ _ POST ['CountryID']), а не только isset ($ _ POST).

Таким образом, следующее должно работать.

<?php

require('../scripts/x_connect.php');

if(isset(

Проверяйте имя отправленного параметра, например isset ($ _ POST ['CountryID']), а не только isset ($ _ POST).

Таким образом, следующее должно работать.

[110]POST['CountryID'])) { // Create Country if(!isset(

Проверяйте имя отправленного параметра, например isset ($ _ POST ['CountryID']), а не только isset ($ _ POST).

Таким образом, следующее должно работать.

[110]POST['CountryID'])) { if(isset(

Проверяйте имя отправленного параметра, например isset ($ _ POST ['CountryID']), а не только isset ($ _ POST).

Таким образом, следующее должно работать.

[110]POST['CountryName'])) { $CountryName =

Проверяйте имя отправленного параметра, например isset ($ _ POST ['CountryID']), а не только isset ($ _ POST).

Таким образом, следующее должно работать.

[110]POST['CountryName']; } if(isset(

Проверяйте имя отправленного параметра, например isset ($ _ POST ['CountryID']), а не только isset ($ _ POST).

Таким образом, следующее должно работать.

[110]POST['Gross'])){ $Gross =

Проверяйте имя отправленного параметра, например isset ($ _ POST ['CountryID']), а не только isset ($ _ POST).

Таким образом, следующее должно работать.

[110]POST['Gross']; } $stmt = oci_parse($conn, "INSERT INTO COUNTRY (COUNTRYNAME, GDP) VALUES (:CountryName, :GDP)"); oci_bind_by_name($stmt, ":CountryName", $CountryName); oci_bind_by_name($stmt, ":GDP", $Gross); oci_execute($stmt); $Affected = oci_num_rows($stmt); oci_commit($conn); oci_free_statement($stmt); oci_close($conn); // echo $Gross; // echo $CountryName; if(count($Affected) > 0){ header("Location: ../viewCountries.php?Success=$CountryName has been created!"); } else { header("Location: ../viewCountries.php?Danger=$CountryName hasn't been created!"); } // Update Country } else { if(isset(

Проверяйте имя отправленного параметра, например isset ($ _ POST ['CountryID']), а не только isset ($ _ POST).

Таким образом, следующее должно работать.

[110]POST['CountryID'])) { $CountryID =

Проверяйте имя отправленного параметра, например isset ($ _ POST ['CountryID']), а не только isset ($ _ POST).

Таким образом, следующее должно работать.

[110]POST['CountryID']; } if(isset(

Проверяйте имя отправленного параметра, например isset ($ _ POST ['CountryID']), а не только isset ($ _ POST).

Таким образом, следующее должно работать.

[110]POST['CountryName'])) { $CountryName =

Проверяйте имя отправленного параметра, например isset ($ _ POST ['CountryID']), а не только isset ($ _ POST).

Таким образом, следующее должно работать.

[110]POST['CountryName']; } if(isset(

Проверяйте имя отправленного параметра, например isset ($ _ POST ['CountryID']), а не только isset ($ _ POST).

Таким образом, следующее должно работать.

[110]POST['Gross'])){ $Gross =

Проверяйте имя отправленного параметра, например isset ($ _ POST ['CountryID']), а не только isset ($ _ POST).

Таким образом, следующее должно работать.

[110]POST['Gross']; } $stmt = oci_parse($conn, "UPDATE COUNTRY SET COUNTRYNAME = :CountryName, GDP = :GDP WHERE COUNTRYID = :CountryID"); oci_bind_by_name($stmt, ":CountryID", $CountryID); oci_bind_by_name($stmt, ":CountryName", $CountryName); oci_bind_by_name($stmt, ":GDP", $Gross); oci_execute($stmt); $Affected = oci_num_rows($stmt); oci_commit($conn); oci_free_statement($stmt); oci_close($conn); // echo "CountryID" . ' ' . $CountryID . "<br>"; // echo "GDP" . ' ' . $Gross . "<br>"; // echo "Country Name" . ' ' . $CountryName . "<br>"; // echo "Rows Affected" . ' ' . $Affected; if(count($Affected) > 0){ header("Location: ../viewCountries.php?Success=$CountryName has been updated!"); } else { header("Location: ../viewCountries.php?Danger=$CountryName hasn't been updated!"); } } } else { // Delete Country if(isset(

Проверяйте имя отправленного параметра, например isset ($ _ POST ['CountryID']), а не только isset ($ _ POST).

Таким образом, следующее должно работать.

[110]GET['CountryID'])) { $CountryID =

Проверяйте имя отправленного параметра, например isset ($ _ POST ['CountryID']), а не только isset ($ _ POST).

Таким образом, следующее должно работать.

[110]GET['CountryID']; $stmt = oci_parse($conn, "DELETE FROM COUNTRY WHERE COUNTRYID = :CountryID"); ocibindbyname($stmt, ":CountryID", $CountryID); oci_execute($stmt); $Affected = oci_num_rows($stmt); oci_commit($conn); oci_free_statement($stmt); oci_close($conn); if(count($Affected) > 0){ header("Location: ../viewCountries.php?Success=Country has been deleted!"); } else { header("Location: ../viewCountries.php?Danger=Country hasn't been deleted!"); } } } ?>
14
задан Ben Griswold 5 September 2008 в 19:04
поделиться

6 ответов

Это звучит мне, как будто Вы ответили на все важные вопросы. У нас было подобное обсуждение на работе недавно, и мы не совсем решены все же.

Однако одна вещь, которую мы изучили, состоит в том, чтобы сослаться на двоичные файлы, для получения всех преимуществ, которые Вы отмечаете, но создали двоичные файлы общей системой сборки, откуда исходный код находится в общем месте, доступном всех машин разработчика (по крайней мере, если они находятся в сети на работе), так, чтобы любая отладка могла на самом деле погрузиться в код библиотеки при необходимости.

Однако на той же ноте, мы также отметили много базовых классов с соответствующими атрибутами, чтобы заставить отладчик пропустить их полностью, потому что любая отладка Вас делает в Ваших собственных классах (на уровне, который Вы разрабатываете), только было бы весьма больше обычного размера кодом из основных библиотек. Таким образом, когда Вы совершаете нападки эти Шаг В сочетание клавиш отладки на классе библиотеки, Вы повторно появляетесь в следующую часть кода на Вашем текущем уровне, вместо того, чтобы иметь необходимость пробраться через тонны кода библиотеки.

В основном, я определенно голосую (в ТАК терминах) за Ваши комментарии о хранении доказанного кода библиотеки с глаз долой для нормального разработчика.

кроме того, если я загружаю файл глобального решения, который содержит все проекты и в основном, просто все, ReSharper 4, кажется, имеет некоторую коронарную проблему, поскольку Visual Studio практически прибывает в бездействие.

5
ответ дан 1 December 2019 в 15:02
поделиться

По-моему, самая большая проблема с использованием ссылок проекта состоит в том, что оно не предоставляет потребителям общую базовую линию для их разработки. Я предполагаю, что библиотеки изменяются. Если это так, создание их и обеспечение, что они являются имеющими версию, дадут Вам легко восстанавливаемую среду.

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

2
ответ дан 1 December 2019 в 15:02
поделиться

Я склонен рассматривать общие библиотеки как это как сторонние ресурсы. Это позволяет библиотеке иметь свои собственные процессы сборки, тестирование QA, и т.д. Когда QA (или кто бы ни) "благословляет" выпуск библиотеки, это копируется в центральное расположение, доступное всем разработчикам. Тогда до каждого проекта решить версию библиотеки для потребления путем копирования двоичных файлов в папку проекта и использования двоичных ссылок в проектах.

Одна вещь, которая важна, состоит в том, чтобы создать отладочный символ (pdb) файлы с каждой сборкой библиотеки и сделать доступных также. Другая опция состоит в том, чтобы на самом деле создать локальное хранилище символьной информации в Вашей сети и иметь каждого разработчика, добавляют что хранилище символьной информации к их конфигурации VS. Это позволило бы Вам отлаживать через код и все еще обладать преимуществами использования двоичных ссылок.

Что касается преимуществ Вы упоминаете для ссылок проекта, я не соглашаюсь с Вашей второй точкой зрения. Мне важно, чтобы проекты потребления явно знали, какую версию общей библиотеки они используют и для них, чтобы сделать преднамеренный шаг для обновления той версии. Это - лучший способ гарантировать, что Вы случайно не берете изменения в библиотеке, которые не были завершены или протестированы.

2
ответ дан 1 December 2019 в 15:02
поделиться

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

я сделал это, чтобы позволить разработчикам открывать трудное решение, которое только имеет Домен, тесты и веб-проекты. Наши сервисы победы, и материал Silverlight и библиотеки веб-элементов управления находятся в отдельных решениях, которые включают проекты, в которых Вы нуждаетесь при рассмотрении тех, но nant может создать все это.

1
ответ дан 1 December 2019 в 15:02
поделиться

Я полагаю, что Ваш вопрос на самом деле о том, когда проекты сочетаются в том же решении; причина, являющаяся этим, проектирует в том же решении, должен иметь ссылки проекта друг другу, и проекты в различных решениях должны иметь двоичные ссылки друг на друга.

я склонен думать, что решения должны содержать проекты, которые разрабатываются тесно вместе. Такой как Ваши блоки API и Ваши реализации тех API.

Близость относительна, как бы то ни было. Разработчик для приложения, по определению, тесно связан с приложением, однако Вы не хотели бы иметь разработчика и приложение в том же решении (если они во всем комплексе, который является). Вы, вероятно, хотели бы разработать разработчика против ответвления программы, которая объединяется с промежутками далее расположенная с интервалами независимо, чем нормальная ежедневная интеграция.

1
ответ дан 1 December 2019 в 15:02
поделиться

Я думаю, что, если проект не является частью решения, Вы не должны включать его там..., но это - просто мое мнение

, я разделяю его понятием в коротком

0
ответ дан 1 December 2019 в 15:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: